【发布时间】:2016-08-22 02:58:52
【问题描述】:
我有一个从 SQL 数据库获取数据的 .NET MVC 项目。
当我在本地机器上以调试模式运行项目时,它运行没有错误;但是,在我使用 Microsoft 的发布向导(创建一个 .zip,将该 .zip 移动到网站指向的 wwwRoot 文件夹)将项目部署到我的 IIS 服务器(我相信是版本 6)后,我遇到了一个问题:我访问网站的主页通过 URL 地址,但是当我输入登录 ID 时,它会产生一个内置的错误消息“无效的用户 ID”。
当输入有效 ID 时,唯一出现此错误的情况是无法访问数据库以检查登录凭据。因此,使用 SQL Profiler,我尝试查看是否对数据库进行了查询 - 答案似乎是“否”。
我已验证在 IIS 环境中正确配置了连接字符串,并且可以放心地假定没有与此问题相关的代码错误。
问题:还有哪些其他故障排除方法可用于 IIS 和 SQL 交互,以了解此错误的根源是什么,或者您可能需要哪些建议来尝试消除问题
【问题讨论】:
-
IIS 服务器上的应用程序事件。防火墙开了吗?他们在同一个域上吗? IIS 服务器真的可以“看到”sql 服务器吗?此外,您可能需要记录失败/成功的登录尝试。默认情况下,SQL Server 不会记录那些失败的尝试。
-
IIS 服务器(托管 SQL 服务器的同一台机器)上的事件日志给出错误消息“用户 'IIS APPPOOL\OPOC' 登录失败。原因:无法显式打开指定的数据库”。我确信它们在同一个域中,因为这个 IIS 服务器已经为这个项目运行了一段时间的测试环境。无论它是否可以看到 SQL 服务器,我不确定如何确认,但我已经假设了,因为在对一些视图进行一些更改后重新部署应用程序之前它正在工作
-
将用户添加到数据库登录并授予该用户访问数据库的权限。代码中的连接字符串应该有它的凭据。它在您的机器上运行的原因可能是因为您是服务器上的系统管理员或其他人。查找在连接字符串的参数中输入凭据的方法。
-
很高兴我能帮上忙。其背后的原因是需要访问数据库的服务需要被授予访问权限。嵌入在请求中,您想要使用(或拟人化)的实际凭据就在那里。就像... 为了能够敲门,您需要被授予访问权限。然后,要打开门并在那里做事,您需要访问权限。
标签: sql-server asp.net-mvc iis