Tag: asp.net core

Json.NET根据属性类型使属性成为必需

我正在努力使用.Net核心中的自定义json序列化,我正在尝试默认所需的所有属性,除非属性具有特定类型。 这是我想要实现的一个例子: 让我们确定我有以下类型:F#: type FooType = { id: int name: string optional: int option } 你可以考虑下面的代码与C#中的类似: class FooType = { int Id {get;set;}; string Name {get;set;}; Nullable Optional {get;set;}; } 我想要做的是返回错误,如果json对象中缺少Id或Name属性,但如果缺少Optional,则反序列化而不会出现错误(因此基本上根据需要将属性设置为不需要)。 我可以使用此示例中的RequireObjectPropertiesContractResolver标记所有属性: https : RequireObjectPropertiesContractResolver但不幸的是我无法构建更具动态性的东西。 我还有我希望添加到序列化的可选类型的默认转换器。 它不是这个特定问题的一部分,但是如果您知道如何将属性标记为必需或在一个地方使用自定义转换器,那么它甚至可能更大。

AspNet核心身份,如何设置options.Cookie.SameSite?

在最新的模板和库中使用了httpsonly标志。 我怎么能把它关掉? 同样的问题已经过时,它没有完整的配置示例: AspNet核心身份 – cookie未在生产中设置

使用RequireHttpsAttribute ASP.NET Core的HTTP错误310 ERR_TOO_MANY_REDIRECTS

我正在使用MVC在ASP.NET核心上构建一个应用程序。 我也在我的应用程序中使用Identity和Entity 7框架。 我正在Microsoft Azure上运行应用程序,该应用程序应附带HTTPS证书。 我正在使用此代码在我的Startup.cs中启用HTTPS services.AddMvc(options => { #if !DEBUG options.Filters.Add(new RequireHttpsAttribute()); #endif }); 我的问题是,当我访问网络应用程序时,我得到一个310 HTTP ERR_TOO_MANY_REDIRECTS响应。 我已经尝试清除我的cookie并将Web应用程序重新发布到Azure,但这些都没有成功。 当我禁用上面的代码时,我的应用程序在Azure上运行。 当我在浏览器中手动键入https://时,我得到一个安全的HTTPS连接。

修改CookieAuthenticationOptions LoginPath OnRedirectToReturnUrl事件

我在MVC 6 ASP.NET 5项目中进行了以下设置: 配置方法中的Startup.cs: app.UseCookieAuthentication(options => { options.AuthenticationScheme = “Cookie”; options.LoginPath = new PathString(“//account/signin/”); options.AccessDeniedPath = new PathString(“//account/unauthorised/”); options.AutomaticAuthenticate = true; options.AutomaticChallenge = true; options.Events = new CookieAuthenticationEvents { OnRedirectToReturnUrl = MyClass.RedirectToReturnUrlAsync }; }); 活动课程: public static class MyClass { public static async Task RedirectToReturnUrlAsync(CookieRedirectContext context) { context.Options.LoginPath = new PathString(“//account/signin”); } } 让我们说用户转到以下url: […]

将加载配置添加到asp.net核心中的注入依赖项中

在我的Asp.Net Core API中,我有一些我正在使用我的Startup.cs中的services.AddTransient方法注入的存储库类。 services.AddTransient(); 我还将我的appsettings.json的一部分加载到Startup.cs中的自定义对象中 services.Configure(Configuration.GetSection(“AppSettings”)); 我的存储库类需要从appsettings.json加载数据库连接字符串。 有没有办法将这些设置直接注入存储库类? 或者是由控制器的构造函数将连接字符串传递给存储库类?

实体类型“类型”处于阴影状态。 有效模型要求所有实体类型都具有相应的CLR类型

我正在使用Asp.net Core和EF core来设置IdentityServer4。 在此过程中,我想将数据合同和数据访问与核心项目分开。 为此,我创建了两个相关项目,一个包含DbContext,另一个包含合同。 最终我想让事情变得更复杂,但首先我只想尝试向IdentityUser添加一个相关对象,该对象默认为ApplicationUser,并在涉及Asp.net Identity的默认项目中存储为ApsnetUsers。 为此,我创建了一个inheritanceIdentityUser的基础ApplicationUserDto类。 我已经将补充对象/表添加到该对象,并通过更新ModelBuilder测试应用程序,最终,所有内容都按预期工作。 现在的问题。 我的最终目标是两个有两个独立的类,它们都inheritanceApplicationUserDto,一个用于内部用户,一个用于外部用户。 每个人都有自己的补充一对一数据表。 为了开始构建这个,我创建了两个类,InternalUserDto和InternalUserProfilePropertiesDto。 ApplicationUserDto类: namespace SingleSignOn.Identity.DataAccess.Contracts { public class ApplicationUserDto: IdentityUser {} } InternalUserDto.cs namespace SingleSignOn.Identity.DataAccess.Contracts { public class InternalUserDto : ApplicationUserDto { public virtual InternalUserProfilePropertiesDto InternalUserProfilePropertiesDto { get; set; } public InternalUserDto() { } } } InternalUserProfilePropertiesDto.cs namespace SingleSignOn.Identity.DataAccess.Contracts.UserProperties { public class InternalUserProfilePropertiesDto { […]

在单独的类库中本地化数据注释

我们正在尝试为我们的域模型实现本地化,这些域模型存在于我们解决方案中的单独的类库项目中。 但是,我们无法使其工作,因为我们的模型数据注释属性根本没有被翻译。 项目结构 解 网络项目 资源文件夹(包含.resx文件。 例如App.en.resx )工作正常 类库 领域模型 资源文件夹(包含.resx文件。 例如App.en.resx )不起作用 Startup.cs services.AddMvc() .AddViewLocalization(LanguageViewLocationExpanderFormat.Suffix) .AddDataAnnotationsLocalization(); 注意 本地化在Web项目中工作,例如它转换视图,控制器。 但是,当我们尝试翻译存在于单独项目中的模型时,它不起作用。 // 问候

ASP NET 5使用单独程序集中的View组件进行本地化

我有一个“类库”项目,上面有一些“ViewComponents”,我已经让它们在我的“MVC 6 Web应用程序”上运行了( 感谢这个问题 ),但现在我正在尝试将语言资源(本地化)添加到我的“ViewComponents”。 关于如何做到这一点的任何建议? 我已经在我的“MVC 6 Web应用程序”上添加了必要的行到启动文件: startup.cs […] services.AddMvc() .AddViewLocalization(options => options.ResourcesPath = “Resources”); […] app.UseRequestLocalization(new RequestCulture(new CultureInfo(“es-MX”))); 我还在我的“类库”视图中添加了依赖项: 查看/共享/组件/页眉/ foo.cshtml @using Microsoft.AspNet.Mvc.Localization @inject IViewLocalizer LocString @LocString[“HelloWorld”] 并在我的“类库”项目中创建了Resource文件夹和文件: -Resources -Views.Shared.Components.Header.foo.cshtml.resx 但我得到的只是关键字“HelloWorld”而不是本地化资源“Hola mundo”的名称 总之我错过了什么吗? 有没有人知道在“mvc 6 web应用程序”中“类库”的“视图组件”中使用本地化资源的方法 笔记: 我正在使用mvc 6 RC1 来自非ViewComponents的其他视图的资源正常工作。 谢谢!

Asp.Net 5缺少Linq到Sql类

如何使用Mvc 6在Microsoft Asp.Net 5中添加Linq to Sql文件。 请看下面的截图。 我无法找到这个Linq to Sql文件。 那边还没有C#标签? 当我使用Mvc 5在Asp.Net 4上打开项目时,有这个C#选项卡,以及Linq to sql文件。

EF 7(核心)。 像AddTransient一样创建DBContext

根据文档,我配置DbContext如下面的DI在范围内注册它(每个http请求) services.AddEntityFramework() .AddSqlServer() .AddDbContext(options => { options.UseSqlServer(Configuration[“Data:DefaultConnection:ConnectionString”]); } ); 当我尝试在另一个线程中访问它时出现问题。 public class HomeController : Controller { private readonly DBData _context; public HomeController(DBData context) { _context = context; } public IActionResult StartInBackground() { Task.Run(() => { Thread.Sleep(3000); //System.ObjectDisposedException here var res = _context.Users.FirstOrDefault(x => x.Id == 1); }); return View(); } } 我想为每个调用配置DbContext创建(AddTransition)。 它可以让我编写下一个代码 public void […]