我有一个ASP.NET(MVC 5)Web应用程序在本地工作正常,但是当我将它发布到IIS服务器时,当我点击访问数据库的Controller时,我得到以下错误页面。
建立与SQL Server的连接时发生与网络相关或特定于实例的错误。服务器未找到或无法访问。验证实例名称是否正确,以及SQL Server是否配置为允许远程连接。 (提供程序:SQL网络接口,错误:50 - 发生本地数据库运行时错误。无法创建自动实例。有关错误详细信息,请参阅Windows应用程序事件日志。)
这就是我web.config
的样子:
<?xml version="1.0" encoding="utf-8"?>
<configuration>
<configSections>
<section name="entityFramework" type="System.Data.Entity.Internal.ConfigFile.EntityFrameworkSection, EntityFramework, Version=6.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089" requirePermission="false" />
</configSections>
<connectionStrings>
<add name="DefaultConnection"
connectionString="Data Source=WIN-ALUKOTV9R\SQLEXPRESS;Initial Catalog=Staging;Persist Security=True;User Id=MyWebUser;Password=password"
providerName="System.Data.SqlClient" />
</connectionStrings>
<entityFramework>
<defaultConnectionFactory type="System.Data.Entity.Infrastructure.LocalDbConnectionFactory, EntityFramework">
<parameters>
<parameter value="v11.0" />
</parameters>
</defaultConnectionFactory>
<providers>
<provider invariantName="System.Data.SqlClient" type="System.Data.Entity.SqlServer.SqlProviderServices, EntityFramework.SqlServer" />
</providers>
</entityFramework>
</configuration>
这是在临时服务器上,因此我直接在该VM上安装了Visual Studio(其中安装了IIS和SQL Server 2014 Express)。我可以使用相同的连接字符串将此数据库添加到Visual Studio Server资源管理器窗格中。但出于某种原因,它不能在IIS中工作。
还有一件事值得一提,很久以前曾经有一个名为NOSS的服务器,所以有一次我有一个指向NOSS的连接字符串。但是现在当我查看在部署文件夹中生成的web.config时,我看到旧的连接字符串和另外两个随机连接字符串。我不知道他们来自哪里,所以我最终手动删除那些无用的。我离开的那个是DefaultConnection
。
<connectionStrings>
<add name="DefaultConnection"
connectionString="Data Source=Data Source=.\SQLEXPRESS;Initial Catalog=Staging;Persist Security Info=True;User ID=MyWebUser;Password=password"
providerName="System.Data.SqlClient" />
<add name="Logistix.Repository.Repositories.LogistixContext"
connectionString="Data Source=NOSS\SQLEXPRESS;Initial Catalog=Logistix;Persist Security Info=True;User ID=MyWebUser;Password=password"
providerName="System.Data.SqlClient" />
<add name="Logistix.Web.LogistixDataContext"
connectionString="Logistix.Web.LogistixDataContext_ConnectionString"
providerName="System.Data.SqlClient" />
<add name="Logistix.Web.Models.LogistixWebContext"
connectionString="Logistix.Web.Models.LogistixWebContext_ConnectionString"
providerName="System.Data.SqlClient" />
</connectionStrings>