部署到IIS时,We​​bApi访问数据库失败

时间:2018-04-10 10:59:46

标签: c# asp.net-mvc tsql asp.net-web-api2

我开发ASP.Net MVC网站,该网站使用ADO.Net实体数据模型连接到MS SQL Server。

要访问数据,它在从jquery调用的视图中使用WebApis,它使用上面的数据模型来获取数据,它还使用视图控制器中的代码,它也使用相同的数据模型。

当我在本地(在开发机器上)运行时,一切正常。但是,当我将其部署到IIS v10.0并尝试从另一台计算机访问该网站时,它部分工作。使用WebApis调用数据库时失败,显示:

  

HTTP500:SERVER ERROR - 服务器遇到意外情况,无法完成请求。

虽然从视图控制器调用数据访问代码的页面正常工作。

当我查看WebAPI的错误时,我发现产生了以下错误:

  

" ExceptionMessage":"用户登录失败' xxx \ yyy-zzz-15 $'

我不知道为什么要使用此登录信息 - 我希望它能够使用“NT AUTHORITY \ IUSR'登录,就像来自视图控制器的数据访问代码一样。

有什么想法吗?

4 个答案:

答案 0 :(得分:1)

你有两个选择

  1. 在数据库中将该用户添加到NT AUTHORITY \ SYSTEM并为其提供 对数据库的权限。
  2. 让新用户登录数据库并给它 对数据库的权限,并将web.config更改为不集成 安全性并添加用户ID和密码。

答案 1 :(得分:1)

您遇到的问题是因为您作为默认帐户运行 - 然后您要求该帐户访问其他计算机和数据。要解决此问题,您需要将其作为实际帐户使用。

要让您的webcode作为用户运行,最简单的方法是从您的AD团队获取一个功能帐户,然后将您的站点的池设置为该AD帐户,并允许该AD帐户也适当(例如,不是sa) )对SQL ..根据对上述穆罕默德选项的评论。

答案 2 :(得分:0)

请检查运行您网站的应用程序池。如果应用程序池在服务帐户上运行,则需要将相同的帐户添加到数据库服务器并分配适当的权限。

答案 3 :(得分:0)

在您的连接字符串中,如果您未设置用户,它将使用IUSR用户。 并且IUSR用户没有足够的权限连接到数据库。

我不建议为IUSR用户授予权限,因为这可能会导致安全问题!

相反,您应该在连接字符串中定义用户ID和密码。

如果您的服务器中没有可以使用的用户,您可以创建新用户并为该用户提供必要的权限。

这是一个简单的连接字符串:

data source=yourServerID;initial catalog=YourDatabaseName;user ID=yourNewUser;password=PasswordOfYourNewUser;

配置新用户:

https://support.chartio.com/knowledgebase/granting-table-level-permissions-in-sql-server