用户'DOMAIN \ SERVERNAME $'登录失败

时间:2018-04-19 15:08:35

标签: asp.net sql-server windows-integrated-auth integrated-security

我正在为我的公司创建一个ASP.NET应用程序。

在Visual Studio中,我使用EntityFramework通过edmx文件连接到我的SQL Server数据库。该应用程序使用Windows身份验证连接到网站和SQL Server。

当我在本地运行应用程序时,一切都运行良好。 Windows身份验证有效,因此我的应用程序知道我是谁,然后它正确连接到SQL Server并显示数据。

但是当我尝试在我的IIS服务器上部署它时,我收到以下错误:

  

用户'DOMAIN \ SERVERNAME $'登录失败。

Windows身份验证非常适合识别我在应用程序中的身份,但用于连接到SQL Server的集成安全性使用的是服务器身份而不是应用程序用户的身份。

您可能想知道的事情:

  • 所有用户都有一个SQL Server帐户,可通过集成安全性进行连接
  • 服务器与我们的计算机位于同一个域中
  • SQL Server位于运行IIS的计算机之外的另一台服务器上,但远程连接已激活且正常工作
  • 我正在使用Google Chrome在本地和远程测试我的应用

我正在使用连接字符串:

<connectionStrings>
<add name="DatabaseEntities" connectionString="metadata=res://*/Models.DatabaseModel.csdl|res://*/Models.DatabaseModel.ssdl|res://*/Models.DatabaseModel.msl;provider=System.Data.SqlClient;provider connection string=&quot;data source=SQLSERVERNAME\INSTANCE;initial catalog=Database;integrated security=True;multipleactiveresultsets=True;application name=EntityFramework&quot;" providerName="System.Data.EntityClient" />

是否可以对ASP.NET应用程序和SQL Server使用相同的Windows身份验证?

2 个答案:

答案 0 :(得分:0)

您应该将域用户添加到SQL-server登录 - look here

或者从连接字符串中删除集成安全选项,并添加sql server user的用户ID和密码:

<add name="DbConnectionString" connectionString="Data Source=SERVER;Initial Catalog=db;User Id=sqlusername;Password=sqluserpass;MultipleActiveResultSets=True;App=EntityFramework" providerName="System.Data.SqlClient"/>

请注意,exampled连接字符串不包含模型优先方法的元数据

答案 1 :(得分:0)

我一直在寻找如何在我的API中为SQL FILESTREAM进行设置。

使用IPV4更新SQL Server的FQDN或SERVERNAME的主机文件。

在凭据管理器中添加2个凭据。
一个用于文件共享另一个端口1433。
文件传输不需要域,但需要端口1433版本。
Window_Credential_Manager

之后,便可以使用Trusted Connection或Integrated Security = SSPI来访问FILESTREAM。