【问题标题】:App runs in VS iis express but not in IIS 8应用程序在 VS iis express 中运行,但不在 IIS 8 中
【发布时间】:2016-12-13 02:16:27
【问题描述】:

我在使用 IIS 8 时遇到了一个有趣的问题。我可以运行刚刚找到的应用程序。但是,在触发 sql 查询后,我得到了可怕的“用户'NT AUTHORITY\ANONYMOUS LOGON' 登录失败”。

这一切的真正关键在于,当我使用 Visual Studio 2013 在 IIS Express 中运行时,它运行良好。

IIS Authentication Settings

Web.Config:

<system.web>
    <authentication mode="Windows" />
    <identity impersonate="true" />
    <authorization>
      <deny users="?" />
    </authorization>
</system.web>

感谢任何/所有帮助!

【问题讨论】:

  • Lex,我阅读了您的博文,感谢您提供的信息。但是,我已将 appPool 标识更改为所有可能的选择本地服务、本地系统、网络服务和应用程序池标识不起作用。但是,当我在自定义帐户下将池标识设置为我的帐户时,它可以正常工作。我错过了什么?
  • 有些域用户在 sql server 上登录我想让他们在页面加载时使用他们的域凭据,然后应用程序将使用这些凭据连接到 sql server。
  • 模仿只是第一步。如果您没有正确配置 Kerberos 委派(AD 设置),则仍然可能发生错误。
  • 这个应用程序曾经是一个 ASP.net 应用程序,它运行良好。我将它重新分解为 MVC Web 应用程序,但现在它不起作用。我不确定 kerberos 委托在这种情况下是否有意义。
  • 如果您检查 Kerberos 委托有多复杂,您就会明白为什么它很容易被破坏并无法工作。此外,“它运行良好”是一个无效声明,您是否仔细检查过它是如何彻底配置的?

标签: c# visual-studio iis iis-express iis-8


【解决方案1】:

确保在 IIS 中运行应用程序池的帐户有权访问 SQL Server。如果这不起作用,请尝试将运行应用程序池的帐户更改为 NetworkService 或 LocalService ,看看是否有任何效果。

还可以尝试在“高级设置...”对话框中更改一些其他应用程序池设置,例如托管管道模式并启用 32 位应用程序。

【讨论】:

  • 到目前为止,当我将应用程序池标识更改为自定义帐户并关闭 asp.net 模拟时,我才能正确加载页面。但是,我想使用用户在页面加载时输入的凭据。我还想添加这个网络应用程序只是一个 Intranet 应用程序。
【解决方案2】:

感谢大家的帮助。

最终发生的是我们只是使用了一个本地 sql 帐户。

我们将使用 AD 来控制谁可以访问该页面。

使用&lt;deny roles="DOMAIN\Domain Users"/&gt;

web 配置文件中的选项。

【讨论】:

    猜你喜欢
    • 2021-08-26
    • 1970-01-01
    • 2020-02-26
    • 2017-04-09
    • 1970-01-01
    • 1970-01-01
    • 2011-08-10
    • 2012-12-29
    • 2021-10-25
    相关资源
    最近更新 更多