[英]Blazor added an MVC app on IIS has multiple matching endpoints issue
我被这个奇怪的问题困住了,一直没有找到解决方案。
您可以查看我询问有关该问题的详细背景的另一个问题(以及一些代码): 将 Blazor 添加到现有 MVC web 项目,“请求匹配多个端点”到 /_Host
简短的背景是这样的:我正在为一个 MVC 应用程序进行概念验证,我们希望慢慢迁移到 Blazor。 我根据几个在线教程将 blazor 添加到应用程序中。 我在 razor 页面中有一个有效的 blazor 组件。 但是,当我尝试使用 blazor 页面时,我在导航到该页面时出现错误:
2022-09-12 12:17:27.8448||ERROR|Microsoft.AspNetCore.Server.IIS.Core.IISHttpServer|Connection ID "18014398511092596900", Request ID "800000a7-0000-fa00-b63f-84710c7967bb": An unhandled exception was thrown by the application. Microsoft.AspNetCore.Routing.Matching.AmbiguousMatchException: The request matched multiple endpoints. Matches:
/_Host
/_Host
at Microsoft.AspNetCore.Routing.Matching.DefaultEndpointSelector.ReportAmbiguity(CandidateState[] candidateState)
at Microsoft.AspNetCore.Routing.Matching.DefaultEndpointSelector.ProcessFinalCandidates(HttpContext httpContext, CandidateState[] candidateState)
at Microsoft.AspNetCore.Routing.Matching.DefaultEndpointSelector.Select(HttpContext httpContext, CandidateState[] candidateState)
at Microsoft.AspNetCore.Routing.Matching.DefaultEndpointSelector.SelectAsync(HttpContext httpContext, CandidateSet candidateSet)
at Microsoft.AspNetCore.Routing.Matching.DfaMatcher.SelectEndpointWithPoliciesAsync(HttpContext httpContext, IEndpointSelectorPolicy[] policies, CandidateSet candidateSet)
at Microsoft.AspNetCore.Routing.EndpointRoutingMiddleware.<Invoke>g__AwaitMatch|8_1(EndpointRoutingMiddleware middleware, HttpContext httpContext, Task matchTask)
at Microsoft.AspNetCore.Session.SessionMiddleware.Invoke(HttpContext context)
at Microsoft.AspNetCore.Session.SessionMiddleware.Invoke(HttpContext context)
at Microsoft.AspNetCore.ResponseCompression.ResponseCompressionMiddleware.InvokeCore(HttpContext context)
at Microsoft.AspNetCore.Diagnostics.ExceptionHandlerMiddleware.<Invoke>g__Awaited|6_0(ExceptionHandlerMiddleware middleware, HttpContext context, Task task)
at Microsoft.AspNetCore.Diagnostics.ExceptionHandlerMiddleware.HandleException(HttpContext context, ExceptionDispatchInfo edi)
at Microsoft.AspNetCore.Diagnostics.ExceptionHandlerMiddleware.<Invoke>g__Awaited|6_0(ExceptionHandlerMiddleware middleware, HttpContext context, Task task)
at Microsoft.AspNetCore.Server.IIS.Core.IISHttpContextOfT`1.ProcessRequestAsync()|url: http://10.186.34.90/test|action: Error
如果您查看我之前的问题,您会发现我尝试将这个完全相同的应用程序部署到另一台服务器并且问题不存在。 所以我得出结论,这一定与 IIS 有关。
从那以后,我一直在比较 IIS 中的站点设置,但没有发现任何可以更改的内容来修复它。
然后,我创建了一个小型应用程序,其基本页面/视图/控制器布局与我正在处理的应用程序相同。 就在 VS 在您 select 时创建的默认应用程序中,这是一个 ASP.Net 核心 MVC 应用程序模板。 我以与在主应用程序中相同的方式添加了 blazor,并且此应用程序在故障服务器或主应用程序工作的服务器上都没有问题。
不用说,我现在对这是 IIS 问题还是应用程序问题感到非常迷茫和困惑。 这似乎是一个组合,但我没有想法。
如果有人可以请提供有关要查看的内容的建议,我将不胜感激。 我非常乐意提供您要求的任何其他信息。
经过数小时查看 IIS 并进行各种代码更改后,我能够找到解决方案。
事实证明.Net 6.0.1 在发生这种情况时有一个错误。 该站点在其他服务器上正常运行的原因与 IIS 无关,而是他们有一个更新版本的.Net,其中不再存在该错误。
在更新到最新版本的 .Net Hosting Bundle(当前为 6.0.9)后,问题得到解决。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.