我从defaut模板创建了默认的asp.net核心应用程序.我在创建新项目的过程中选择了Windows身份验证选项(这就是我所做的).当我在issexpress上运行应用程序时,它就像一个魅力.
当我将应用程序移动到本地iis时,它可以工作,但它不会获得用户信息.我在Windows功能中启用了Windows身份验证.但它显示我空的User.Identity.Name.我试图将这些行添加到web.config
<security>
<authentication>
<windowsAuthentication enabled="true" />
<anonymousAuthentication enabled="false" />
</authentication>
</security>
Run Code Online (Sandbox Code Playgroud)
试图从IIS管理器打开Windows身份验证.我不知道还有什么可能是错的.我错过了什么?
目前,我正在尝试找到一种方法来构建一个托管浏览器窗口的桌面应用程序,并使用JavaScript与本地ASP.NET Core Web API作为"后端"进行通信:
我的所有搜索都会提示我应该使用IIS Express Web服务器.
不幸的是,IIS Express版本不适合我的情况,因为我希望整个应用程序是由非管理员用户安装和运行的.
由于IIS Express需要管理权限才能安装,因此这对我来说是超出范围的.
我的问题:
除了使用IIS Express运行ASP.NET Core Web API项目之外,还有其他方法吗?
我已经读过关于Kestrel服务器的信息,这似乎是我正在寻找的,但我仍然没有在这里得到大局.
编辑1:
.net iis desktop-application kestrel-http-server asp.net-core
简单的菜鸟问题:-)
我即将投入使用一个小型.NET核心应用程序主机,该主机托管在digitalocean的Droplet中.我一直使用IIS托管网站,但我想转移到Linux发行版并使用nginx作为反向代理.
我的问题是标题说:-)是否每次都需要像IIS一样回收"应用程序池"?如果没有,这是否意味着应用程序从Kestrel加载是在线直到它关闭?
最好的问候Jens
我的.net核心应用程序中出现以下错误
错误-4077 ECONNRESET连接由对等方重置
这究竟意味着什么?
我注意到如果长时间保持我的应用程序处于空闲状态,如1或2小时,则会发生此错误,
此外,我已经在我的应用程序中处理了会话超时,这对于给定的规定会话超时效果很好,可以说30分钟,但如果超过这个很长时间,那么我得到上述错误.
并且,我没有在我的应用程序中使用任何套接字.
对此有任何帮助表示赞赏!
在asp.net Web API中,可以将具有特定端口的路由映射到控制器,如下所示:
public void Run1()
{
HttpConfiguration config = new HttpConfiguration();
...
config.Routes.MapHttpRoute(
name: "Controller1",
routeTemplate: "{action}",
defaults: new { controller = "Controller1" }
);
Microsoft.Owin.Hosting.WebApp.Start("http://localhost:9000/base1/", config);
}
public void Run2()
{
HttpConfiguration config = new HttpConfiguration();
...
config.Routes.MapHttpRoute(
name: "Controller2",
routeTemplate: "{action}",
defaults: new { controller = "Controller3" }
);
Microsoft.Owin.Hosting.WebApp.Start("http://localhost:9000/base2/", config);
}
public void Run3()
{
HttpConfiguration config = new HttpConfiguration();
...
config.Routes.MapHttpRoute(
name: "Controller3",
routeTemplate: "{action}",
defaults: new { controller = "Controller3" }
);
Microsoft.Owin.Hosting.WebApp.Start("http://localhost:9050/base3/", config); …Run Code Online (Sandbox Code Playgroud) 到目前为止,在IIS 7.5下托管.net核心(2.2)API的现有设置运行顺利且效果很好。
突然我发现日志保存了该消息,Application is shutting down...而没有任何错误或其他原因的迹象。当突然生成比以前更多的日志文件时,我开始意识到这一点。
我不确定,但是当我从.NET Core 2.1迁移到2.2时可能已经开始了。
有人知道这是功能还是错误,有害或故意?
在记录我的 Web 应用程序接收到的 HTTP 标头(它是负载均衡器+friewall)时,我注意到我收到了 X-Original-For 和 X-Original-Proto 标头(除了传统的 X -Forwarded-XXX 标头)。
他们的目的是什么?
谢谢。
我遇到的问题很简单。我想访问我的IHostedService.
我找不到办法做到这一点。那里没有任何请求,所以我无法使用IHttpContextAccessor.
IServerfeatures 属性没有任何地址,我没有选择。
我不想在配置中硬编码服务器的 URL。
我运行的.NET core版本是3.0。
我按照以下步骤创建了一个具有 Windows 身份验证并通过 Kestrel/Negotiate 托管的 Blazor 应用程序。(https://learn.microsoft.com/en-us/aspnet/core/security/authentication/windowsauth?view=aspnetcore-3.0&tabs=visual-studio#kestrel)
使用 Visual Studio 2019 (16.4.0) 创建 Blazor 应用程序。(Windows 身份验证,https)
使用 Kestrel 运行时,请按照以下步骤进行操作。
NuGet package Microsoft.AspNetCore.Authentication.Negotiate services.AddAuthentication(NegotiateDefaults.AuthenticationScheme).AddNegotiate();
Run Code Online (Sandbox Code Playgroud)
Configure()在中添加以下代码Startup.cs。它们添加在app.UseRouting();和之间app.UseEndpoints(...; app.UseAuthentication();
app.UseAuthorization();
Run Code Online (Sandbox Code Playgroud)
ValidateAuthentication在应用此问题的答案之前,它仍然无法与 Windows 身份验证一起使用。
app.UseMiddleware<ValidateAuthentication>();
Run Code Online (Sandbox Code Playgroud)
internal class ValidateAuthentication : IMiddleware
{
public async Task InvokeAsync(HttpContext context, RequestDelegate next)
{
if (context.User.Identity.IsAuthenticated)
await next(context); …Run Code Online (Sandbox Code Playgroud) 我有这个代码运行 kestrel
builder.WebHost.UseKestrel().UseUrls("https://myfirstproj1.asp")
.UseIISIntegration();
Run Code Online (Sandbox Code Playgroud)
但我无法通过我指定的网址访问该网站。我究竟做错了什么?