升级到 .NET 6 后 IIS 子应用程序未处理请求 - 返回 307
Posted
技术标签:
【中文标题】升级到 .NET 6 后 IIS 子应用程序未处理请求 - 返回 307【英文标题】:IIS sub application not handling requests after upgrading to .NET 6 - returning 307 【发布时间】:2021-12-28 23:31:48 【问题描述】:在安装 .NET 6 SDK + 托管包后,我们的应用程序像以前一样停止处理请求。
IIS 设置如下:
在 .NET 4.7 上运行的根应用程序 在 .NET core 3.1 上运行的多个子应用程序(进程外) Haproxy 在前面,向 IIS 发送未加密的 HTTP 请求(和签名请求)。根应用工作正常,但子应用像以前一样停止处理请求。
在子应用程序上启用标准输出日志后,我看到了请求,但似乎第一个 URL 段没有按应有的方式处理。
这是日志:
info: Microsoft.AspNetCore.Hosting.Diagnostics[1]
Request starting HTTP/1.1 GET http://subdomain.domain.net/subapplication/ping 0
trce: Microsoft.AspNetCore.HostFiltering.HostFilteringMiddleware[2]
All hosts are allowed.
dbug: Microsoft.AspNetCore.StaticFiles.StaticFileMiddleware[4]
The request path /ping does not match a supported file type
dbug: Microsoft.AspNetCore.HttpsPolicy.HttpsRedirectionMiddleware[1]
Redirecting to 'https://subdomain.domain.net/subapplication/ping'.
dbug: Microsoft.AspNetCore.Server.Kestrel[9]
Connection id "0HMDA5V61D9BR" completed keep alive response.
info: Microsoft.AspNetCore.Hosting.Diagnostics[2]
Request finished in 1.2475ms 307
似乎发生的事情是请求错过了控制器中间件,并转到下一个:StaticFile 中间件。
好像在安装 .NET 6 之后,子应用程序不知道它在日志中的路径名 subapplication
。
我尝试卸载 .NET 6(+runtime+hosting bundle 等),但没有成功。 我还尝试强制安装 .NET 3.1,但又没有运气。
为了恢复以前的正确行为,我没有想法..
什么参数会对子应用第一个 URL 段处理产生如此大的影响?以及如何解决这个问题?
【问题讨论】:
【参考方案1】:通过删除 app.UseHttpsRedirection();
中间件来解决问题..
但我们仍然不明白安装 .NET 6 如何改变了某些应用(但不是全部)和某些 IIS 服务器(但不是全部)上的应用行为。
【讨论】:
以上是关于升级到 .NET 6 后 IIS 子应用程序未处理请求 - 返回 307的主要内容,如果未能解决你的问题,请参考以下文章
.NET 升级发布后,IIS出现了System.IO.DirectoryNotFoundException
.NET 升级发布后,IIS出现了System.IO.DirectoryNotFoundException
.NET 升级发布后,IIS出现了System.IO.DirectoryNotFoundException
Asp.net MVC5 angular4未捕获引用错误:部署到IIS后系统未在systemjs.config.js中定义
ASP.NET iis发布网站后,浏览报错。虚拟路径“/aspx/login.aspx”映射到另一个应用程序,这是不允许的。