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

时间:2012-02-01 23:06:44

标签: asp.net-mvc-3 iis-7.5 windows-authentication

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

Logon Method Not yet determined 
Logon User Not yet determined 

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

<authentication mode="Windows" />

我在没有授权部分的情况下尝试过它。

<authorization>
  <allow users="*" />
</authorization>

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

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

<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>

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

Anonymous Authentication     Disabled
ASP.NET Impersonation        Disabled
Forms Authentication         Disabled
Windows Authentication       Enabled

我遗失的任何其他想法或事物?

4 个答案:

答案 0 :(得分:3)

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

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

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

答案 1 :(得分:2)

似乎您的Windows身份验证有效,因为在打开页面时系统会提示您输入凭据...您应该将凭据放在那里,它应该会将您带到您的网页...或问题是您是在放入正确的凭据后无法打开您的页面?

我首先尝试将您的应用程序池模式从经典更改为集成(反之亦然)。

然后,看起来您的机器在某个域中?在这种情况下,请检查您是否提供了正确的凭据。您应该将<domain>\<your_username>作为用户名。此外,如果这不起作用,请尝试在域中添加和删除您的计算机,然后重试。可能有更多的想法,让我知道这是怎么回事,如果可能的话,命令nltest.exe /SC_QUERY:domain_name的输出是什么?

答案 2 :(得分:1)

您需要在IIS中实际配置它以使用Windows身份验证。

  1. 打开 IIS管理器
  2. 转到您的应用程序驻留在IIS中的位置
  3. 内容视图中,双击身份验证
  4. 启用 Windows身份验证并禁用匿名身份验证
  5. 如果您只是在AppPool上执行此操作,应用程序设置将覆盖此。

    当你说:

      

    我已验证启用了Windows身份验证并禁用了匿名身份验证。

    你究竟在哪里设置了这个?不确定在您收到提示的计算机上运行的操作系统,但某些版本的Windows不支持Windows身份验证(即Windows 7 Home不支持)。

答案 3 :(得分:1)

我遇到了同样的问题。在默认网站下创建新应用程序时,一切正常。但是,当我创建一个新网站并将文件放在那里时,我似乎无法让它工作。我一直收到登录提示。我为我的新站点使用相同的应用程序池,并配置了目录权限以允许完全控制iis_isuser和其他人,因为这是一个开发机器。