为什么我的MVC3 Intranet站点Windows身份验证在发布时不起作用

Bri*_*ian 6 windows-authentication iis-7.5 asp.net-mvc-3

我们在MVC3和实体框架中有一个简单的Intranet站点.从visual studio调试运行一切正常.当我将网站发布到我的本地框IIS7.5网络服务器或同一域上的开发框时,我会收到提示输入用户名和密码,它将无法连接到该网站.它只返回401.1错误,并好奇地显示

Logon Method Not yet determined 
Logon User Not yet determined 
Run Code Online (Sandbox Code Playgroud)

我已经验证启用了Windows身份验证并禁用了匿名身份验证.该应用程序正在使用applicationPoolIdentity但我已经尝试使用网络服务没有区别.webconfig包括

<authentication mode="Windows" />
Run Code Online (Sandbox Code Playgroud)

并且我在有和没有授权部分的情况下尝试过它.

<authorization>
  <allow users="*" />
</authorization>
Run Code Online (Sandbox Code Playgroud)

我在网上找到的唯一另一件事涉及更改注册表项,但这最终将在生产服务器上,所以我不习惯为此进行注册表更改.

使用此代码块在本地运行会返回所有预期信息

<div id="title">
    <h4> Environment.UserName: @Environment.UserName  
    @DateTime.Now.Millisecond.ToString() </h4>
    @foreach (var role in Roles.GetRolesForUser())
    {
        role.ToString(); <br />
    }
</div>
<div id="logindisplay">
    Context.User.Identity.Name <strong>@Context.User.Identity.Name</strong>!<br />
    @Environment.UserDomainName
</div>
Run Code Online (Sandbox Code Playgroud)

它是一个MVC3 Web应用程序.IIS身份验证开关是

Anonymous Authentication     Disabled
ASP.NET Impersonation        Disabled
Forms Authentication         Disabled
Windows Authentication       Enabled
Run Code Online (Sandbox Code Playgroud)

我缺少的任何其他想法或事物?

Ada*_*amV 3

MSDN 上的这篇文章说明了如何设置 IIS 7 MVC3 Intranet 网站: http://msdn.microsoft.com/en-us/library/gg703322 (VS.98).aspx

与您相关的有趣的部分很可能是关于模仿的最后一节。如果您以 Windows 身份验证运行站点,但关闭了模拟,您将使用经过身份验证的身份读取/执行网站的文件。这意味着每个想要访问该站点的用户都需要文件夹/文件权限。

为了避免这种情况,请使用 Windows 身份验证允许用户进行身份验证,但使用模拟来使用单一身份来访问文件夹/文件。