前段时间发布了一个ASP.NET MVC网站,结果网站竟然无法打开,出现“/”应用程序中的服务器错误。的错误信息。开始以为是项目的代码或者配置出现了问题,后面又排除掉服务器的权限问题,才发现原来是因为IIS应用程序池重复使用导致的。
这里先简单的说明下造成此错误的原因,我们将网站发布到IIS上的时候,是需要选择和设置应用程序池,如果新发布网站所设置的应用程序池已经有其他网站使用了,那么就会出现抛出System.InvalidOperationException异常。完整的错误信息如下:
“/”应用程序中的服务器错误。
未能映射路径“/”。
说明: 执行当前 Web 请求期间,出现未经处理的异常。请检查堆栈跟踪信息,以了解有关该错误以及代码中导致错误的出处的详细信息。
异常详细信息: System.InvalidOperationException: 未能映射路径“/”。
源错误:
执行当前 Web 请求期间生成了未经处理的异常。可以使用下面的异常堆栈跟踪信息确定有关异常原因和发生位置的信息。
堆栈跟踪:
[InvalidOperationException: 未能映射路径“/”。]
System.Web.HttpRuntime.HostingInit(HostingEnvironmentFlags hostingFlags, PolicyLevel policyLevel, Exception appDomainCreationException) +462
[HttpException (0x80004005): 未能映射路径“/”。]
System.Web.HttpRuntime.FirstRequestInit(HttpContext context) +12617364
System.Web.HttpRuntime.EnsureFirstRequestInit(HttpContext context) +159
System.Web.HttpRuntime.ProcessRequestNotificationPrivate(IIS7WorkerRequest wr, HttpContext context) +12456981
如何避免System.InvalidOperationException: 未能映射路径“/”。
主要就一点,避免重复使用相同的应用程序池,特别是托管管道模式为集成模式。比如下面两张图片所示:
可以看出这两个网站都是设置了同样的应用程序池,所以最终导致其中一个网站会打不开,会抛出InvalidOperationException异常。
其实一般我们在IIS上添加新网站的时候,会自动设置一个新的应用程序池,如果没有必要就不用设置了:
一般出现此异常只要重新设置网站的应用程序池即可,右键点击网站-》管理网站-》高级设置:
原创文章,作者:ItWorker,如若转载,请注明出处:https://blog.ytso.com/98677.html