繁体   English   中英

部署到IIS的ASP.NET WebAPI:对web.config的访问被拒绝(IIS搜索路径错误)

[英]ASP.NET WebAPI deployed to IIS: Access to web.config denied (IIS searches in wrong path)

我有一个ASP.NET MVC / WebAPI混合项目,该项目在VS2012开发服务器中运行得很好。 它具有标准的MVC {controller}/{action}/{id}路由,以及附加的WebAPI路由api/{controller}/{id} /api/...开头的请求定向到WebAPI,其他定向到普通MVC。

当我将其部署到本地IIS时,正常的MVC路由正在工作。 但是,对WebAPI的/api调用会导致异常

Access to the path 'C:\inetpub\wwwroot\myapp\web.config' is denied.

然后,我尝试在inetpub文件夹及其子文件夹上设置适当的安全权限。 这没有任何帮助,并且由于正常的MVC请求正在运行,因此我不认为问题与安全性有关。

然后,我启动了Sysinternals Process Monitor,以查看w3wp.exe在请求期间正在做什么。 事实证明,IIS在这里查找web.config

C:\inetpub\wwwroot\myapp\api\web.config
C:\inetpub\wwwroot\myapp\api\mycontroller\web.config

当然,那里没有web.config

如何设置IIS识别两条路由?

我认为这不是您的路由问题。 问题是授予IIS的权限我不时遇到此错误。 根据您在其下运行的应用程序池标识,需要提供对该实体的权限。 这是一个非常详尽的解释的链接

IIS AppPoolIdentity和文件系统写访问权限

基本上,右键单击您的项目文件夹,转到属性,单击安全性选项卡,您将看到组或用户名。 这些是允许对该目录执行读取和/或写入操作的实体。 单击编辑,然后单击添加; 从这里开始,您将“输入要选择的对象名称”,通常IIS再次位于IIS_IUSRS下,这取决于您从此处开始的应用程序池配置,您应该从提到的错误继续进行!

我希望这有帮助!

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM