我目前有一个自托管的OWIN WebAPI服务,它使用某些URL的Windows身份验证模式,而使用App Startup(startup.cs)中的以下代码的几乎所有其他URL使用Anonymous:
if (app.Properties.ContainsKey("System.Net.HttpListener"))
{
HttpListener listener = (HttpListener)app.Properties["System.Net.HttpListener"];
listener.AuthenticationSchemeSelectorDelegate = request =>
{
var restrictedAuthenticationScheme = (AuthenticationSchemes)AuthenticationSchemes.IntegratedWindowsAuthentication;
var scheme =
request.RawUrl.IndexOf("internal", StringComparison.OrdinalIgnoreCase) >= 0
|| request.RawUrl.IndexOf("admin", StringComparison.OrdinalIgnoreCase) >= 0
? restrictedAuthenticationScheme // use intergated for internal or admin end points only
: AuthenticationSchemes.Anonymous;
Logger.LogInfo(string.Format("Request : {0}, Authentication Scheme {1}", request.RawUrl, scheme.ToString()));
return scheme;
};
listener.Start();
}
但是,在IIS下运行时,似乎不是HTTPListener,因此app.properties(app.Properties [" System.Net.HttpListener"]不存在),所以关键数量是12,但是当他自己托管它时13.任何想法,我应该如何处理这个问题? 希望我已经包含了足够的细节,但请告诉我。