當與運行角:DOTNET運行 - 角 - Windows身份驗證 - 未通過身份驗證
NG服務--proxy-配置proxy.config.js
和.NET的核心有:
DOTNET運行
Windows身份驗證內華達州呃認證用戶。
但是,當從Visual Studio F5用戶運行應用程序進行身份驗證時,(相同的端口和所有內容)。
proxy.config.js
const Agent = require('agentkeepalive');
module.exports = {
'/api': {
target: 'http://localhost:5000',
secure: false,
agent: new Agent({
maxSockets: 100,
keepAlive: true,
maxFreeSockets: 10,
keepAliveMsecs: 100000,
timeout: 6000000,
keepAliveTimeout: 90000
}),
onProxyRes: proxyRes => {
let key = 'www-authenticate';
proxyRes.headers[key] = proxyRes.headers[key] &&
proxyRes.headers[key].split(',');
}
}
};
iisSettings
iisSettings": {
"windowsAuthentication": true,
"anonymousAuthentication": false,
"iisExpress": {
"applicationUrl": "http://localhost:5000/",
"sslPort": 0
}
}
Startup.cs
public class Startup
{
public Startup(IConfiguration configuration)
{
Configuration = configuration;
}
public IConfiguration Configuration { get; }
public void ConfigureServices(IServiceCollection services)
{
services.AddAuthentication(IISDefaults.AuthenticationScheme);
services.AddMvc(config =>
{
var policy = new AuthorizationPolicyBuilder()
.RequireAuthenticatedUser()
.Build();
config.Filters.Add(new AuthorizeFilter(policy));
});
services.AddMvc();
}
public void Configure(IApplicationBuilder app, IHostingEnvironment env)
{
app.Use(async (context, next) =>
{
await next();
if (context.Response.StatusCode == 404 &&
!Path.HasExtension(context.Request.Path.Value) &&
!context.Request.Path.Value.StartsWith("/api/"))
{
context.Request.Path = "/index.html";
await next();
}
});
app.UseMvcWithDefaultRoute();
app.UseDefaultFiles();
app.UseStaticFiles();
}
}
這是爲什麼點網絡運行和dotnet手錶運行不適用於Windows身份驗證,但Visual Studio F5呢?
更新
我曾嘗試加入「weblistener」,而不是在項目屬性中啓用身份驗證。加入weblistener後,我能夠用dotnet的運行來驗證,但我再也不能開始使用VS F5出於某種原因調試...
.UseHttpSys(options =>
{
options.Authentication.Schemes = AuthenticationSchemes.NTLM;
options.Authentication.AllowAnonymous = false;
})
據我瞭解,我必須使用WebListener或IIS +紅隼對於Windows身份驗證。我試過weblistener但是不會允許我使用iis進行調試?另外我無法找到dotnet run + iis的解決方案。你知道爲什麼我不能使用weblistener進行調試,並且你有一個適用於iis和dotnet的解決方案嗎? – Reft
@Reft是,可以爲IIS Core或WebListener託管的ASP.NET Core應用程序配置Windows身份驗證。而WebListener不能與IIS或IIS Express一起使用,因爲它與ASP.NET核心模塊不兼容。查看[在ASP.NET Core中配置Windows身份驗證](https://docs.microsoft.com/zh-cn/aspnet/core/security/authentication/windowsauth) - 您可以配置IIS站點,而不是使用VS + IIS Express – Set
對不起,但這並沒有幫助我。一旦應用程序部署完畢,Windows身份驗證就會像應該那樣工作。問題是當我在當地發展。該應用程序託管在iis,所以我想開發使用iis express和dotnet cli。我不想在localhost中使用httpsys。使用dotnet cli阻止我使用iis express?我是否被迫使用visual studio而不是dotnet watch run? – Reft