当我从运行IIS的同一台机器访问网站时,我能够连接到数据库,但如果我尝试远程访问它,则不能。我设置连接的唯一方法是指定物理路径凭据:
这对我不起作用,因为我在查询数据库时使用用户名作为搜索条件,这样我总是得到相同的用户名(我在物理路径凭证中指定的用户名)。
我很困惑,因为在本地和远程访问网站时,我使用相同的凭据,我得到不同的结果。
这是尝试远程访问站点时抛出的异常:
ByNadexLoginSystem.Exception:System.Exception: ' SelectDataObject()'失败了---> System.Data.SqlClient.SqlException:与网络相关或 建立连接时发生特定于实例的错误 SQL Server。服务器未找到或无法访问。校验 实例名称正确且SQL Server配置为 允许远程连接。 (提供者:命名管道提供商,错误:40 - 无法打开与SQL Server的连接)---> System.ComponentModel.Win32Exception:访问被拒绝---结束 内部异常堆栈跟踪
我已尝试添加文件夹权限,如下所示: ASP.NET Application page not working on clients computers没有任何成功。
SQL Server配置为允许远程连接。
我确定这是一个权限问题,我无法找到。有什么想法吗?
答案 0 :(得分:1)
我找到了问题的解决方案,我想赞扬Sean Lange。由于他的问题,它给了我一系列的调查。通过msdns文档https://msdn.microsoft.com/en-us/library/bsz5788z.aspx时,我发现了这个:
如果SQL Server与Web服务器位于不同的计算机上,则 Windows身份必须能够通过网络流向远程 SQL Server的实例。 (已配置的Windows网络) 适当的Kerberos身份验证能够做到这一点。) 但是,具体取决于身份配置中的设置 element,在操作系统上建立的Windows标识 ASP.NET应用程序的线程可能无法正常流动 远程SQL Server。
在IIS中,只有基本身份验证使用安全令牌记录用户 流经网络到远程SQL服务器。默认情况下, 与身份一起使用的其他IIS安全模式 配置元素设置不会产生可以的令牌 对远程SQL Server进行身份验证。
启用模拟和基本身份验证(禁用Windows身份验证)解决了它!