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

Asp.net mvc 4 部署到IIS的ASP.NET WebAPI:对web.config的访问被拒绝(IIS在错误路径中搜索),asp.net-mvc-4,asp.net-web-api,asp.net-mvc-routing,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\my

我有一个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进程监视器,以查看
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会在IIS_IUSRS下执行。这取决于您的应用程序池配置。从这里开始,您应该从提到的错误继续


我希望这有帮助

谢谢,但我已经这么做了。如果是安全问题,为什么常规MVC路线可以工作?为什么IIS访问错误文件夹中的
web.config
。在这里查看此[Q和A][1]。[1]: