0

我有一个 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 以识别这两条路由?

4

1 回答 1

1

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

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

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

我希望这有帮助!

于 2013-09-20T21:29:48.247 回答