【问题标题】:ASP.NET WebAPI deployed to IIS: Access to web.config denied (IIS searches in wrong path)ASP.NET WebAPI 部署到 IIS:拒绝访问 web.config(IIS 搜索路径错误)
【发布时间】:2013-09-20 20:14:31
【问题描述】:

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

【问题讨论】:

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


    【解决方案1】:

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

    IIS AppPoolIdentity and file system write access permissions

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

    我希望这会有所帮助!

    【讨论】:

    • 谢谢,但我已经这样做了。如果这是一个安全问题,为什么正常的 MVC 路由可以工作?以及为什么 IIS 访问了错误文件夹中的web.config
    • 这是 IIS 尝试访问错误文件夹的多种原因。在这里看看这个 [Q and A][1] .[1]:stackoverflow.com/questions/11634939/…
    猜你喜欢
    • 2023-03-22
    • 2013-05-12
    • 2017-04-28
    • 1970-01-01
    • 2015-04-06
    • 2017-01-27
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多