使用稍大的有效负载(800 MB)处理文件上载,服务器超时.
在Windows(7和10)上使用asp.net核心RC2,mvc6和Kestrel服务器,无法找到设置会话超时的位置.
我疯了,我找不到它在网上搜索.你如何设置超时?
我有一个非常简单的Kestrel/ASP.NET Core项目成功部署到我的Windows 2008 R2服务器..(以空Web项目+ IdentityServer4 nuget开始我正在关注此入门页面)
所以,我最初可以检索'发现'JSON文档.
然后,(根据本指南)我添加了几个NuGet包,一些视图/ CSS等...
升级的解决方案在我的Win7开发盒上运行正常,但是,在重新部署之后..现在我得到了可怕的502.5错误页面.如果我进入服务器并尝试通过命令行"启动"可执行文件..我可以看到此错误:
未处理的异常:System.IO.FileLoadException:无法加载文件或程序集'Microsoft.Extensions.Logging.Abstractions,Version = 1.1.1.0,Culture = neutral,PublicKeyToken = adb9793829ddae60'或其依赖项之一.定位的程序集的清单定义与程序集引用不匹配.(来自HRESULT的异常:0x80131040)在Ross.Web.Applications.Identity.Program.Main(String [] args)
我哪里做错了?
我可以看到上面提到的DLL,Microsoft.Extensions.Logging.Abstractions发布到服务器的文件系统.我猜我需要做一个绑定重定向或其他东西,但是,我太新了核心知道如何.
更新
将我的NuGet包升级到最新版本...错误类似,但现在找不到:Microsoft.AspNetCore.Hosting.Abstractions, Version=1.1.2.0
Having to applications auth and store and authenticating using IdentityServer4 and both are behind NGINX.
The store application successfully authenticates but after coming back from the auth application we get 502 Bad Gateway from NGINX.
Any idea what is going wrong here?
Auth app log:
info: Microsoft.AspNetCore.Hosting.Internal.WebHost[2]
Request finished in 117.7292ms 200 text/html; charset=UTF-8
info: Microsoft.AspNetCore.Hosting.Internal.WebHost[1]
Request starting HTTP/1.0 POST http://auth.example.com/connect/token application/x-www-form-urlencoded 279
info: IdentityServer4.Hosting.IdentityServerMiddleware[0]
Invoking IdentityServer endpoint: IdentityServer4.Endpoints.TokenEndpoint for /connect/token
info: IdentityServer4.Validation.TokenRequestValidator[0]
Token request validation success
{
"ClientId": "ExampleStore", …Run Code Online (Sandbox Code Playgroud) 我只是试图调试一个用 asp.net core 2.0 构建的项目。然而,它在启动 kestrel 服务器时编译成功但失败。
我得到的运行时异常是
服务器地址“ http://localhost:56950/ ”中的方案无法识别。仅支持“http://”。
据我了解,它必须与https://服务器方案有关。但我不记得如果我不小心把https配置放在某个地方。
到目前为止,我偶然发现了这个来源,但没有运气。
任何人都可以把我放在正确的方向吗?
错误
我正在使用一个ASP.NET Core应用程序,该应用程序GraphQL通过RestSharp使用一个端点来检索数据。这是一个Intranet类型的应用程序,已部署在Windows 2016 IIS服务器上,我们正在使用Windows身份验证。我们遇到的问题是,属于大量活动目录组的某个用户正在间歇性获得431 Request标头过长的错误。
我尝试了以下操作:
我设置了IISDefaults在startup.cs该应用程序与服务并重:
services.AddAuthentication(IISDefaults.AuthenticationScheme);
Run Code Online (Sandbox Code Playgroud)我在RestRequest中传递UseDefaultCredentials
var client = new RestClient(endpoint);
var request = new RestRequest(Method.POST);
request.UseDefaultCredentials = true;
request.AddHeader("content-type", "application/json");
request.AddParameter("application/json", data, ParameterType.RequestBody);
IRestResponse response = client.Execute(request);
return response.Content;
Run Code Online (Sandbox Code Playgroud)设置注册表项,MaxFieldLength并将MaxRequestBytes其设置为允许的最大值。
从stdout记录:
信息:Microsoft.AspNetCore.Server.Kestrel [17]连接ID“ 0HLIABLA41UKH”错误的请求数据:“请求标头太长。” Microsoft.AspNetCore.Server.Kestrel.Core.BadHttpRequestException:请求标头太长。Microsoft.AspNetCore.Server.Kestrel.Core.Internal.Http.Http1Connection.TakeMessageHeaders(ReadOnlySequence
1 buffer, SequencePosition& consumed, SequencePosition& examined) at Microsoft.AspNetCore.Server.Kestrel.Core.Internal.Http.Http1Connection.ParseRequest(ReadOnlySequence1缓冲区,SequencePosition&已使用,SequencePosition&已检查)在Microsoft.AspNetCore.Server.Kestrel.Core.BadHttpRequestException.Throw (RequestRejectionReason原因)处。 Microsoft.AspNetCore.Server.Kestrel.Core.Internal.Http.HttpProtocol.ProcessRequests [TContext](IHttpApplication1 application) at Microsoft.AspNetCore.Server.Kestrel.Core.Internal.Http.HttpProtocol.ProcessRequestsAsync[TContext](IHttpApplication1应用程序)上的AspNetCore.Server.Kestrel.Core.Internal.Http.Http1Connection.TryParseRequest(ReadResult result,Boolean&endConnection)Microsoft.AspNetCore。
使用 .NET Core 2.1、C#、Kestrel。
这将是一个奇怪的请求,但是:我有一个需要 HTTPS 的外部 URL 和一个仅是 HTTP 的内部 URL。
我想知道如何将端口 443 上的任何流量重定向到 HTTP 到 HTTPS(保持在同一端口 443);目前它停留在 HTTP 上并死于可怕的死亡。
(注意:端口 888 仍为 HTTP,任何到达那里的流量都需要保持为不安全的 HTTP。)
我在 Program.cs 中设置了它,如下所示:
WebHost.CreateDefaultBuilder(args)
.UseStartup<Startup>()
.UseKestrel(options =>
{
options.Listen(IPAddress.Any, 443, opts=>
{
opts.UseHttps("mycert.pfx");
});
options.Listen(IPAddress.Any, 888);
})
.Build();
Run Code Online (Sandbox Code Playgroud)
在启动时,我尝试使用 Configure(IApplicationBuilder app...) app.UseHttpsRedirection();
但这导致两个端口上的所有流量都被重定向到 HTTPS,这对 888 来说是一个问题,因为它没有 SSL 证书!
有什么方法可以根据我指定的端口从 HTTP 重定向到 HTTPS?谢谢
我需要调试外部身份验证,它需要 HTTPS。同时对于大部分内部请求http就足够了。在 IIS 上托管我的 Web 应用程序时,侦听 80 和 443 端口没有问题,但是在我看来,Kesterl 托管了 ASP.NET Core,该端口严格绑定到 launchSettings.json 中的特定配置,例如:
"localCalls": {
"commandName": "Project",
"launchBrowser": true,
"environmentVariables": {
"ASPNETCORE_ENVIRONMENT": "Development"
},
"applicationUrl": "http://localhost:40000"
},
"externalIdentity": {
"commandName": "Project",
"launchBrowser": true,
"environmentVariables": {
"ASPNETCORE_ENVIRONMENT": "Development"
},
"applicationUrl": "https://localhost:50000"
}
Run Code Online (Sandbox Code Playgroud)
我很好奇,是否可以一次在两个端口上都有侦听器,而无需在其他配置中重新启动以更改协议。
我安装.NET Core SDK v3.1在 Ubuntu VPS 上,
现在正在试验ASP.NET Core项目。
我
dotnet new webapp -o <ProjectName> --no-https
用来创建一个 ASP.NET Core 项目,
并
dotnet run
使用 .NET Core 的内置 Web 服务器来运行它。
我有一个小问题,即 .NET Core 的内置 Web 服务器绑定到 IP 127.0.0.1(本地主机),
而不是绑定到我的 VPS 的公共 IP。
这意味着我无法从远程计算机上的浏览器连接到我的 ASP.NET Core 项目,只能从该 VPS 上的浏览器连接。
如果绑定到127.0.0.1Web 服务器而不是绑定到0.0.0.0,
那么它会很好,因为0.0.0.0意味着“所有网络接口”,而不仅仅是本地主机 IP。
在谷歌搜索后,人们建议去项目的文件夹,
然后进入属性文件夹,
在那里,编辑一个名为launchSettings.json.
在该文件中,我们需要改变:
"applicationUrl": "http://localhost:5000"
以
"applicationUrl": "http://0.0.0.0:5000"
这样做并重新运行项目后,问题解决了,
我可以从远程计算机连接到Web服务器。
所以这个解决方案有效,
但我有一个问题:
它需要编辑每个项目的launchSettings.json文件。 …
在我的 ASP.NET Core 3.1 api 中,我将最大请求大小限制为 10 Mb:
Host.CreateDefaultBuilder(args)
.ConfigureWebHostDefaults(webBuilder =>
{
webBuilder.ConfigureKestrel(k =>
{
k.Limits.MaxRequestBodySize = 1024 * 1024 * 10;
});
webBuilder.UseStartup<Startup>();
});
Run Code Online (Sandbox Code Playgroud)
当请求大于 10 Mb 时,kestrel 只是关闭连接而不返回任何响应。
当请求大小超过限制时,如何返回有意义的响应?
我开发了一个 ASP.NET Core Web API,用于上传文件。我正在通过 postman 测试该 API。当我尝试上传超过 28 MB 的文件时,它会抛出请求长度超出错误。所以我试图找到这个问题的解决方案。如果我通过更改 web.config 中的值来增加请求长度错误,它会起作用。但我的要求是不使用 web.config 文件。如果我增加 kestrel 服务器的 MaxRequestBodySize,当我通过 Dotnet CLI 运行应用程序时,它可以正常工作,但当我从 Visual Studio 2019 中通过 IIS Express 运行应用程序时,它就不起作用。如果我在 POST 方法上应用 [DisableRequestSizeLimit] 属性,它仅在 dotnet CLI 上工作,但不在 IIS Express 上。如何全局增加 IIS Express 和 Dotnet CLI 的请求长度?任何帮助表示赞赏。
webBuilder.ConfigureKestrel((context, options) =>
{
options.Limits.MaxRequestBodySize = 524288000;
});
Run Code Online (Sandbox Code Playgroud) c# kestrel-http-server asp.net-core asp.net-core-webapi iis-express-10