Tag: asp.net core mvc

ASP.NET Core Identity不会注入UserManager

我有一个较旧的asp.net核心身份数据库,我想将一个新项目(一个web api)映射到它。 仅仅为了测试,我复制了Models文件夹,以及上一个项目中的ApplicationUser文件(ApplicationUser只是inheritance自IdentityUser,无论如何都没有变化) – 首先做数据库似乎是一个坏主意。 我在ConfigureServices中注册了Identity(但是我没有将它添加到管道中,因为我的唯一目的是使用UserStore) services.AddIdentity() .AddEntityFrameworkStores() .AddDefaultTokenProviders(); 我的期望是现在 UserManager ……应该自动注入构造函数中。 但是,将以下代码添加到控制器私有UserManager _userManager时; public UserController(UserManager userManager) { _userManager = userManager; } …每次调用api都会以exception结束:HttpRequestException:响应状态代码不表示成功:500(内部服务器错误)。 删除“注入”代码可以顺利运行可以接受请求的web api。 在我的任何代码到达之前发生这种情况很难调试。 知道为什么会这样吗? PS从“exception设置”窗口启用所有exception后,我得到了这个: 抛出exception:’System.InvalidOperationException’ Microsoft.Extensions.DependencyInjection.dll 附加信息:尝试激活’Microsoft.AspNetCore.Identity.EntityFrameworkCore.UserStore`4 [Namespace.Models]时,无法解析类型’Namespace.Data.ApplicationDbContext’的服务。 ApplicationUser,Microsoft.AspNetCore.Identity.EntityFrameworkCore.IdentityRole,Namespace.Data.ApplicationDbContext,System.String]”。

如何在ASP.NET Core MVC 2.0中的另一个程序集中使用控制器?

为了模块化,我在不同的程序集中创建了一些控制器。 每个程序集代表整个系统的有界上下文(模块,子系统,部门等)。 每个模块的控制器都是由对其他模块一无所知的人开发的,中央协调器即将在一个应用程序中覆盖所有这些模块。 所以,这个模块叫做school,它里面有一个TeacherController 。 它的输出是Contoso.School.UserService.dll 。 主协调器称为Education ,它引用了Contoso.School.UserService.dll 。 我的program.cs是: public static IWebHost BuildWebHost(string[] args) => WebHost.CreateDefaultBuilder(args).UseKestrel() .UseStartup() .Build(); 然而对于教师控制器的路线,我得到404.如何在其他组件中使用控制器?

ASP.NET Core Identity 3 Cookie超时

RC2发生了一个奇怪的问题。 我使用以下配置选项将Identity 3 ExpireTimeSpan设置为12小时 options.Cookies.ApplicationCookie.ExpireTimeSpan = new TimeSpan(12,0,0); 登录到网站并保持不变约35-40分钟后,我收到401错误(对于我的ajaxpost调用)并刷新网站,我回到登录页面。 当我将ExpireTimeSpan设置为12小时时,为什么必须重新进行身份validation? 我需要其他设置或配置吗? 也, 如何在到期前剩下时间? 我想访问该信息,以便我可以警告我的用户他们的会话将在X时间后过期。 谢谢!

在MVC 6中没有收到JsonResult的回复

我在beta6中使用ASP.NET MVC 6。 在我的Startup.cs中,我有以下代码: services.AddMvc().Configure(o => { o.OutputFormatters.RemoveAll(formatter => formatter.GetType() == typeof(JsonOutputFormatter)); var jsonOutputFormatter = new JsonOutputFormatter { SerializerSettings = { ReferenceLoopHandling = Newtonsoft.Json.ReferenceLoopHandling.Ignore } }; o.OutputFormatters.Insert(0, jsonOutputFormatter); }); 在我的控制器中,我有: public async Task Get() { var result = new DataTablesResult(); List myClass = await _Repository.GetListMyClass(); result.Data = new List(myClass); var resultado = new { data […]

ASP.NET 5 / MVC 6中基于约定的绑定

可以手动注册依赖项: services.AddTransient(); services.AddTransient(); 当依赖关系太多时,手动注册所有依赖项变得很困难。 在MVC 6(beta 7)中实现基于约定的绑定的最佳方法是什么? PS在以前的项目中,我使用Ninject和ninject.extensions.conventions 。 但我找不到MVC 6的Ninject适配器。

AddOAuth linkedin dotnet core 2.0

我正在使用dotnet核心我想在网站上设置LinkedIn身份validation,因为LinkedIn没有默认身份validation构建器,因为facebook,google和twitter我决定使用如下通用实现: services.AddAuthentication().AddOAuth(“LinkedIn”, c => { c.ClientId = Configuration[“linkedin-app-id”]; c.ClientSecret = Configuration[“linkedin-app-secret”]; c.Scope.Add(“r_basicprofile”); c.Scope.Add(“r_emailaddress”); c.CallbackPath = “/signin-linkedin”; c.AuthorizationEndpoint = “https://www.linkedin.com/oauth/v2/authorization”; c.TokenEndpoint = “https://www.linkedin.com/oauth/v2/accessToken”; c.UserInformationEndpoint = “https://api.linkedin.com/v1/people/~:(id,formatted-name,email-address,picture-url)”; }) 我有一个问题,因为GetExternalLoginInfoAsync()为null,查看Identity ASP.net核心源,是因为providerkey为null。 取自asp.net核心代码: var providerKey = auth.Principal.FindFirstValue(ClaimTypes.NameIdentifier); var provider = items[“LoginProvider”] as string; if (providerKey == null || provider == null) { return null; } 问题是我在哪里可以将ClaimTypes.NameIdentifier添加到LinkedIn声明?

从ASP.NET Core 1.1 MVC迁移到2.0后,自定义cookie身份validation无法正常工作

我已经将ASP.NET Core 1.1 MVC项目迁移到ASP.NET Core 2.0,现在我注意到对应用程序的未授权部分的请求不再导致“401 Unauthorized”响应,而是导致响应的代码exception“ 500内部服务器错误”。 日志文件的示例摘录(John Smith无权访问他尝试访问的控制器操作): 2018-01-02 19:58:23 [DBG] Request successfully matched the route with name ‘”modules”‘ and template ‘”m/{ModuleName}”‘. 2018-01-02 19:58:23 [DBG] Executing action “Team.Controllers.ModulesController.Index (Team)” 2018-01-02 19:58:23 [INF] Authorization failed for user: “John Smith”. 2018-01-02 19:58:23 [INF] Authorization failed for the request at filter ‘”Microsoft.AspNetCore.Mvc.Authorization.AuthorizeFilter”‘. 2018-01-02 19:58:23 [INF] Executing […]

将ASP.Net Core 2(.NET Framework)Web Api拆分为类库和托管项目是否可行/明智?

我正在尝试使用Visual Studio 2017(v15.4.5)将现有的WCF Web API(以.NET Framework 4.6.1为目标)移植到ASP.Net Core 2,并且无法找出组织项目的良好/通用/支持方式,以及他们应该是什么类型的项目。 例如: 用于服务器和托管的单个项目, 或用于托管的服务器和控制台应用程序的类库 用于控制台应用程序的Windows经典桌面项目和(新样式csproj)服务器库或两个Web应用程序的Web应用程序(一个输出类库,另一个输出控制台应用程序) 我有一种潜在的怀疑,即我缺少一些基本的东西,这意味着一种方法应该优于其他方法,或者甚至是强制性的,但是发现很难从ASP.Net Core 2文档中发现这种方法。 具体要求 应该以.NET Framework 4.6.1为目标 由于我需要从Web API的内部访问Windows注册表,因此我的目标是.NET Framework 4.6.1而不是.NET Core。 主机使用HTTP.sys 我打算将来使用Windows身份validation,并相信Kestrel不会支持(基于HTTP.sysfunction )。 主机应作为Windows服务运行 最终,Web API应由Windows Installer安装并作为服务运行。 目前,我只是想让API独立构建/工作,但也希望能够深入了解项目选择如何影响发布/部署。 首选方案 虽然默认情况下,新的ASP.NET Core 2 Web应用程序是输出控制台应用程序的单个项目,但我更倾向于将解决方案拆分为2个主要项目: “服务器” – 包含Web API,控制器和启动类的业务逻辑的ASP.NET Core 2(.NET Framework) 类库 “主机” – 控制台应用程序,它引用“服务器”并负责托管Web API 这种安排对我来说似乎很合适,因为任何单元/集成测试项目都可以引用“Server”类库,而不是可执行文件(根据建议, 在C#项目中引用exe文件是不好的做法 )。 此外,我认为这是合理的,因为我可以在项目属性中将输出类型更改为“类库”。 我假设因为我的目标是.Net […]

MVC ICollection ValidationState始终设置为Skipped

作为ASP.NET Core MVC 1.0项目的一部分,我有一个带有ICollection属性的ViewModel。 我需要validation此集合包含一个或多个项目。 我的自定义validation属性未执行。 在我的实例中,它从multipart/form-data表单中保存多个文件附件。 我在ViewModel中使用自定义validation属性修饰了该属性: [RequiredCollection] public ICollection Attachments { get; set; } 下面是自定义属性类。 它只是检查集合不是null并且元素大于零: public class RequiredCollectionAttribute : ValidationAttribute { protected const string DefaultErrorMessageFormatString = “You must provide at least one.”; public RequiredCollectionAttribute() : base(DefaultErrorMessageFormatString) { } protected override ValidationResult IsValid(object value, ValidationContext validationContext) { var collection = (ICollection) value; return […]

ASP.NET Core中的模型绑定将下划线映射到标题案例属性名称

我有一个模型类,我想在我的ASP.NET MVC Core(RC2)应用程序中绑定查询字符串。 我需要在查询字符串键中支持下划线以确认OAuth规范,但我想在我的应用程序中使用标题案例属性名称。 我的模型类看起来像这样: class OauthParameters { public string ClientId {get; set;} public string ResponseType {get; set;} public string RedirectUri {get; set;} } 所以我想将查询字符串如client_id , response_type和redirect_uri绑定到它。 ASP.NET MVC Core有没有办法自动或通过属性注释来实现? 我已经阅读了一些关于编写自定义模型绑定器的文章,但是这些似乎(1)对于我想要实现的内容而言过于复杂,并且(2)是为RC1或更早版本编写的,并且一些语法已经改变。 提前致谢。