我正在研究一个新的Asp.Net核心mvc应用程序.我定义了一个带有自定义约束的路由,它从网址设置当前的应用文化.我正在尝试通过创建如下所示的自定义来管理我的应用的本地化IRequestCultureProvider:
public class MyCustomRequestCultureProvider : IRequestCultureProvider
{
public Task<ProviderCultureResult> DetermineProviderCultureResult(HttpContext httpContext)
{
var language= httpContext.GetRouteValue("language");
var result = new ProviderCultureResult(language, language);
return Task.FromResult(result);
}
}
Run Code Online (Sandbox Code Playgroud)
我的MyCustomRequestCultureProvider每个请求都被击中,这没关系.我的问题是在MVC管道中,DetermineProviderCultureResult来自我的提供程序的方法在路由进程之前被命中,所以httpContext.GetRouteValue("language")总是返回null.
在以前版本的MVC中,我有可能通过这样做来通过路由过程手动处理我的URL
var wrapper = new HttpContextWrapper(HttpContext.Current);
var routeData = RouteTable.Routes.GetRouteData(wrapper);
var language = routeData.GetValue("language")
Run Code Online (Sandbox Code Playgroud)
我现在找不到在新的framewrok中做同样事情的方法.此外,我想使用路由数据找出我的langugae,用一些字符串函数分析我的url字符串,以找到语言不是一个选项.
我的Asp.Net Core mvc Web应用程序需要Windows身份验证.在开发中,在IIS Express上,由于这个设置,一切正常
launchSettings.json
"iisSettings": {
"windowsAuthentication": true,
"anonymousAuthentication": false,
"iisExpress": {
"applicationUrl": "http://localhost:61545/",
"sslPort": 0
}
}
Run Code Online (Sandbox Code Playgroud)
部署到IIS时,我得到一个空白页面.对我的网站的请求获得500错误代码.
我想这个配置添加到Startup.cs,如解释在这里,没有成功.
services.Configure<IISOptions>(options => {
options.ForwardWindowsAuthentication = true;
});
Run Code Online (Sandbox Code Playgroud)
当我直接在IIS中查看身份验证参数时,将激活Windows身份验证.
我找到一些帖子谈论一个名为的包Microsoft.AspNetCore.Server.WebListener,其他人关于实现自定义中间件.我无法想象这个基本功能需要付出那么多努力.我错过了什么吗?