当从客户端计算机通过浏览器连接到网站时,为什么阻止IIS7访问我的数据库?

时间:2016-01-04 12:37:46

标签: asp.net sql-server iis-7

当我从运行IIS的同一台机器访问网站时,我能够连接到数据库,但如果我尝试远程访问它,则不能。我设置连接的唯一方法是指定物理路径凭据:

click to open image

这对我不起作用,因为我在查询数据库时使用用户名作为搜索条件,这样我总是得到相同的用户名(我在物理路径凭证中指定的用户名)。

我很困惑,因为在本地和远程访问网站时,我使用相同的凭据,我得到不同的结果。

这是尝试远程访问站点时抛出的异常:

  

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配置为允许远程连接。

我确定这是一个权限问题,我无法找到。有什么想法吗?

1 个答案:

答案 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身份验证)解决了它!