【问题标题】:How to configure SQL Server to work with ASP.NET MVC with windows authentication?如何配置 SQL Server 以使用带有 Windows 身份验证的 ASP.NET MVC?
【发布时间】:2013-02-02 02:38:02
【问题描述】:

这是我的连接字符串:

<add name="MyDb" providerName="System.Data.SqlClient" connectionString="Server=localhost;Data Source=.\MSSQLSERVER;Initial Catalog=MyDb;Integrated security=SSPI;" />

它在我的本地主机上工作得很好,但是在我的服务器上,部署我的应用程序后,它不想工作,它给了我这个错误:

[SqlException (0x80131904): 网络相关或实例特定 建立与 SQL Server 的连接时出错。这 服务器未找到或无法访问。验证实例 名称正确且 SQL Server 配置为允许远程 连接。 (提供者:SQL 网络接口,错误:25 - 连接 字符串无效)]

当我更改连接字符串以使用帐户凭据 - sa 时,它连接得很好,所以我确切地知道这是 sql server 配置错误的问题。

所以我的问题是:我刚刚安装了 sql server 实例,如何配置它以允许我的 asp.net mvc 应用程序的 Windows 身份验证?

编辑:好吧,毕竟,我再次查看了我的连接字符串,并删除了 Data Source=.\MSSQLSERVER。它有帮助,现在一切正常,谢谢大家的帮助。

【问题讨论】:

    标签: asp.net sql-server asp.net-mvc windows-server-2008 connection-string


    【解决方案1】:

    如果您的应用程序在 IIS 的 DefaultAppPool 下运行,它使用“IIS APPPOOL\DefaultAppPool”帐户以集成模式访问 db。所以要在 SqlServer 中授予帐户:

    1. 打开 sqlserver 实例
    2. 展开安全,选择“新登录”
    3. 为登录名设置“IIS APPPOOL\DefaultAppPool”,从“用户映射”选项卡为帐户授予数据库访问权限。
    4. 点击确定创建。

    希望这会有所帮助。

    【讨论】:

    • 是的,谢谢。不管怎样,我照你说的做了,有一个用户叫IIS APPPOOL\DefaultAppPool。我还将我的应用程序更改为从 defaultapppool 运行(顺便说一下,defaultapppool 被列为本地服务)。但我仍然得到同样的错误。我现在能做什么? ://
    【解决方案2】:

    查看following article on MSDN,它说明了如何更改 SQL Server 的身份验证模式。

    您可以使用 SQL Server 管理工作室:

    1. 在 SQL Server Management Studio 对象资源管理器中,右键单击服务器,然后单击“属性”。
    2. 在“安全”页面的“服务器身份验证”下,选择新的服务器身份验证模式,然后单击“确定”。
    3. 在 SQL Server Management Studio 对话框中,单击“确定”以确认重新启动 SQL Server 的要求。
    4. 在对象资源管理器中,右键单击您的服务器,然后单击重新启动。如果 SQL Server 代理正在运行,它也必须重新启动。

    【讨论】:

    • 是的,我在那里启用了 Windows 身份验证。我想我的问题是,因为我没有添加任何登录?我需要添加到我的登录网络服务或类似的东西吗?
    • 是的,您需要添加一个与您需要访问的数据库关联的帐户。然后,您应该让您的 Web 应用程序的应用程序池在同一帐户下执行。服务器相关问题更适合serverfault.com,因此如果您需要更多详细信息,请随时在此处发布您的问题。 StackOverflow 是一个编程相关的问题,这里没有服务器配置问题。
    【解决方案3】:

    首先确定您的网页在哪个 Windows 帐户下运行。例如,您可以打印以下值:

    User.Identity.Name
    

    如果是“NETWORK SERVICE”之类的仅限本地帐户,则必须更改帐户。如果您在 IIS 中运行,则该帐户是应用程序池的属性。

    一旦您知道该帐户,您就可以在 SQL Server 中授予该帐户登录权限。

    【讨论】:

    • 为 NetworkService 设置了应用程序池。我将登录添加到名为网络服务的我的 sql 服务器(它被列为 NT AUTHORITY\NETWORK SERVICE)并授予它管理员权限。仍然没有结果。
    • 每台服务器都有自己的“网络服务”。因此,仅当 SQL Server 与 Web 服务器位于同一台服务器上时才有效。尝试配置不同的(或新的)帐户。
    • 是的,我的 webserver 和 sql server 在同一台机器上。
    • 嘿,我将我的应用程序池更改为以我的管理员帐户运行,但它不起作用,这是怎么回事...
    • “NETWORK SERVICE”是一个特殊帐户,可能有特殊的东西不起作用。我从未见过它用于访问 SQL Server。
    猜你喜欢
    • 2017-10-07
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多