HTTP 403禁止访问:拒绝访问ASP.NET Web API

时间:2016-11-17 09:31:51

标签: asp.net asp.net-mvc asp.net-web-api iis-7

我在生产服务器上运行ASP.NET Web API项目时遇到以下错误。

  

403 - 禁止访问:访问被拒绝。您无权查看   此目录或页面使用您提供的凭据。

查看IIS 7.0错误日志的基础错误是

  

403.14 - 目录列表被拒绝。

我已经配置了生产服务器,因此它具有与登台服务器相同的设置(可以工作)。身份验证,模块,授权,权限等都是相同的。

根据此帖子403 - Forbidden: Access is denied. ASP.Net MVC中的建议,我已设法通过将 runAllManagedModulesForAllRequests =" true" 添加到我的web.config文件中来实现它。

  

< modules runAllManagedModulesForAllRequests =" true">

虽然这有效但我不认为这是一个长期的解决方案,因为它会在服务器上造成不必要的负担。

所以它似乎表明某些东西没有被加载应该被加载。

6 个答案:

答案 0 :(得分:0)

您可以在将应用程序部署到生产环境时遵循此方法。

  1. 以发布模式发布应用程序。
  2. 将您的应用程序放在inetpub - wwwroot文件夹中,因为此文件夹具有管理员权限。
  3. 希望它应该运行。

答案 1 :(得分:0)

如果您没有访问文件夹/ web.config文件的权限,则会弹出上述错误。

尝试以下

1.In Windows Explorer, locate the web.config file that is associated with the application. 
2.Right-click the web.config file 
3.Click Properties. 
4.Click the Security tab, and then click Edit. 
5.Click Add. 
6.In the Enter the object names to select box, IUSR, click Check Names, and then click OK. 
7.Provide Full control, and then click OK. 
8.In the Web.config Properties dialog box, click OK.

我认为它应该有用。

答案 2 :(得分:0)

就我而言,有人在RouteConfig中删除了默认的Asp Net MVC Home / Index 路由。

将这段代码放回RegisterRoutes方法中的RouteConfig.cs之后,问题就消失了。

    routes.MapRoute(
        name: "Default",
        url: "{controller}/{action}/{id}",
        defaults: new { controller = "Home", action = "Index", id = UrlParameter.Optional }
    );

答案 3 :(得分:0)

以防万一,我的问题是我的发布选项设置为“允许预编译站点可更新”,而我部署的API中缺少文件“ PrecompiledApp.config”。

答案 4 :(得分:0)

我最近在iis(https)上配置网站时遇到了同样的问题。就我而言,尝试了几种解决方案,例如:

  1. 文件夹的安全性和访问权限,我给IIS_USER的访问甚至测试 所有人对已部署文件夹的访问也会更改IIS权限,但没有运气。
  2. 启用了“目录浏览”功能,但没有运气
  3. 启用了“匿名身份验证”,但没有运气
  4. 由于使用https但没有运气,因此请重新安装https SSL证书

和几次击中尝试,最后我发现了!!!!

发布网站/ API时我选择了“ 在发布期间进行预编译”,这是一个很小的问题,当我取消选中此选项时,一切都将正常并且可以正常工作,不确定发生这种情况的实际原因,但是解决您可以尝试显示为以下图片(Visual Studio 2019)的问题:

enter image description here

答案 5 :(得分:-1)

我们错过了与应用程序相关联的部署配置应用程序池。我创建了一个具有相同名称的应用程序池,这个错误消失了。