确切的说是在IIS 7.5中有这问题
就是在visual studio中都用的好好的,但是加载到IIS上的时候竟然报错“
在与 SQL Server 建立连接时出现与网络相关的或特定于实例的错误。未找到或无法访问服务器。请验证实例名称是否正确并且 SQL Server 已配置为允许远程连接。 (provider: Named Pipes Provider, error: 40 - 无法打开到 SQL Server 的连接)
说明: 执行当前 Web 请求期间,出现未经处理的异常。请检查堆栈跟踪信息,以了解有关该错误以及代码中导致错误的出处的详细信息。
异常详细信息: System.Data.SqlClient.SqlException: 在与 SQL Server 建立连接时出现与网络相关的或特定于实例的错误。未找到或无法访问服务器。请验证实例名称是否正确并且 SQL Server 已配置为允许远程连接。 (provider: Named Pipes Provider, error: 40 - 无法打开到 SQL Server 的连接)
源错误:
行 497: catch (System.Data.SqlClient.SqlException e)行 498: {行 499: throw e;行 500: } 行 501:
源文件: D:\MyClassLib\DBUtility\DbHelperSQLP.cs
行: 499
堆栈跟踪:
[SqlException (0x80131904): 在与 SQL Server 建立连接时出现与网络相关的或特定于实例的错误。未找到或无法访问服务器。请验证实例名称是否正确并且 SQL Server 已配置为允许远程连接。 (provider: Named Pipes Provider, error: 40 - 无法打开到 SQL Server 的连接)] DBUtility.DbHelperSQLP.ExecuteReader(String strSQL) in D:\MyClassLib\DBUtility\DbHelperSQLP.cs:499 SfxtHelper.GetCurrentYis(String start, String end) in d:\SunOA\Web\App_Code\SfxtHelper.cs:406 shouji.Page_Load(Object sender, EventArgs e) in d:\SunOA\Web\fyt\shouji.aspx.cs:41 System.Web.Util.CalliHelper.EventArgFunctionCaller(IntPtr fp, Object o, Object t, EventArgs e) +14 System.Web.Util.CalliEventHandlerDelegateProxy.Callback(Object sender, EventArgs e) +35 System.Web.UI.Control.OnLoad(EventArgs e) +91 System.Web.UI.Control.LoadRecursive() +74 System.Web.UI.Page.ProcessRequestMain(Boolean includeStagesBeforeAsyncPoint, Boolean includeStagesAfterAsyncPoint) +2207
版本信息: Microsoft .NET Framework 版本:4.0.30319; ASP.NET 版本:4.0.30319.272
”
网上动不动,网络访问啊开启远程连接,千篇一律的复制,也不看看具体情况,浪费资源还害的别人增加了搜索难度。
本来在visual studio就可以正常使用,说明这网络肯定不存在问题,也不存在什么远程连接的问题
很明显 这就是iis的设置问题。
作为服务器,安全是很重要的,微软在iis7.5上做了些改动。
在iis7.5以前,iis的默认账户是NetworkServices,从iis7.5开始使用当前程序(网站)的应用程序池名称作为默认账户(在系统盘下的“用户”文件下将会看到这些特殊的用户名)
而这些账户的权限是很小的,小到连访问网络的权限都没有,所以访问sql 就会出错了啊,好在微软可以让我们自己指定账户,这样我们就可以新建一个账户,给他指定要权限,然后再给应用程序池使用,问题引刃而解了