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

时间:2013-09-20 20:14:31

标签: asp.net-mvc-4 asp.net-web-api asp.net-mvc-routing

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

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

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以识别这两条路线?

1 个答案:

答案 0 :(得分:1)

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

IIS AppPoolIdentity and file system write access permissions

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

我希望这有帮助!