Windows 2012/IIS 8 + ASP.NET MVC 应用程序 403.14(禁止)-Web 服务器配置为不列出内容

Windows 2012/IIS 8 + ASP.NET MVC 应用程序 403.14(禁止)-Web 服务器配置为不列出内容

我有一个非常简单的 MVC 4 应用程序,正在尝试将其部署到 Windows 2012 服务器。

不一致的是,当导航到 Web 应用程序的根目录(http://localhost/app)时,它会返回403.14-Forbidden

详细错误信息:

Module:            DirectoryListingModule
Notification:      ExecuteRequestHandler
Handler:           StaticFile
Error Code:        0x00000000
Requested URL:     http://localhost:80/test1/
Physical Path:     c:\apps\test1\
Logon Method:      Negotiate

该 Web 应用程序是:

  • 是一个非常原始的 VS2012 MVC4 内部网模板 - 仅对标签进行了调整以证明一切正常。
  • 在集成的 v4.0 应用程序池中运行
  • 设置为使用 Windows 身份验证
  • 应用程序池已分配自定义 AD 标识(因此它可以访问 SQL 服务器)
  • 应用程序池标识在其运行的 c:\apps\test1 文件夹中具有读取权限
  • 它是一个 MVC4 应用程序,目前针对 .NET 4.0 -MVC4 应用程序中没有默认文档(如 default.aspx),因为不需要。
  • 我不想启用目录列表(因为这不是真正的错误)。
  • 已安装:角色 / Web 服务器 (IIS) / 应用程序开发 / (.NET 4.5 扩展性、应用程序初始化、ASP.NET 4.5、ISAP 扩展、ISAPI 过滤器、WebSocket 协议)
  • 在 Windows 8 上的 IISExpress 中本地运行
  • 已在web.config中配置:<modules runAllManagedModulesForAllRequests="true" />
  • 在发布期间设置为预编译

当我将预编译选项更改为时false,Web 应用程序没有失败(至少在我的测试中,它似乎一直有效)。

我之所以说它不一致,是因为我曾经看到它能工作,然后我发布了,错误又出现了。我找不到问题的模式(而且现在,我根本无法让它再次工作)。

403 是从本地或远程 Web 浏览器返回的。

我一直在寻找不适用于旧版本 Windows 的解决方案(例如建议重新安装 ASP.NET,但它在 Windows 2012 上不起作用)。

我真的不知道还能尝试什么。

答案1

刚刚发现其中有“自定义 AD 标识”。

  1. 确保新用户确实有权读取文件系统路径,即使其中没​​有任何内容。
  2. 确保新用户位于 IIS 应用程序组中,以便它可以与元数据库通信
  3. 检查是否配置了内核模式身份验证,然后取决于:
    1. (如果是)检查 setspn 没有多余的记录
    2. (如果没有)请考虑在您的身份验证协商列表中将 NTLM 提升到 Kerberos 之上,看看是否能解决问题。

2012 还比较新,我不知道它的错误怪癖,但当出现 403 禁止时,这些都是很好的起点。

答案2

我有同样的问题。我搜索了很多时间,并按照这里的所有说明操作 关联。我已经像你一样设置了我的应用程序;但它根本不起作用。最后,我发现:当我在发布期间选择预编译时,我必须将 AssemblyCulture 设置为空字符串(在 Properties/AssemblyInfo.cs 文件中)例如:

[程序集:AssemblyCulture(“”)]

如果我按如下方式设置,它不起作用

[程序集:AssemblyCulture(“fr-FR”)]

答案3

我遇到了类似的问题,我的回答是这样的:

http://technet.microsoft.com/en-us/library/cc731598

我已添加访问该服务的机器的 IP。我不知道此功能已启用。

相关内容