我开发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'登录,就像来自视图控制器的数据访问代码一样。
有什么想法吗?
答案 0 :(得分:1)
你有两个选择
答案 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