我有一个 ASP.NET MVC 应用程序,并且正在使用 EntityFramework 5.0。我还安装了一个“CodeFirstMembershipProvider”Nuget 包,它为 ASP.NET 成员资格提供了一些代码 - 我相信我的 web.config 也进行了更改。
基本上,我的问题是我的应用程序在本地 SQL Server 实例上运行良好,但是当我使用此连接字符串指定远程数据库时:
<add name="DefaultConnection" providerName="System.Data.SqlClient" connectionString="Data Source=*******************, 14330;Integrated Security=False;Database=qrcodetr_database;Uid=qrcodetr_admin;Password=*********; Connect Timeout=15;Encrypt=False;Network Library=dbmssocn;Packet Size=4096" />
(密码和主机名已编辑)
它无法使用此连接字符串。它继续尝试使用本地 SQL Server 实例,因此它可以在本地工作,但是当我在我的 Web 和数据库主机上尝试它时,它失败了 - 因为它尝试使用它无法在我的数据库上执行的本地 SQL Server 实例主持人。远程数据库主机使用 SQL Server 2008 R2。
有谁知道为什么会这样或者我能做些什么来解决这个问题?
我不会发布整个 web.config,但这里有几行可能相关:
<add key="DatabaseInitializerForType TreasureHuntDB, QrCodeTreasureHunter" value="DataContextInitializer, QrCodeTreasureHunter"
<sessionState mode="InProc" customProvider="DefaultSessionProvider"> <providers> <add name="DefaultSessionProvider" type="System.Web.Providers.DefaultSessionStateProvider, System.Web.Providers, Version=1.0.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35" connectionStringName="DefaultConnection" /> </providers> </sessionState> <membership defaultProvider="CodeFirstMembershipProvider"> <providers> <add name="CodeFirstMembershipProvider" type="CodeFirstMembershipProvider" connectionStringName="DefaultConnection" /> </providers> </membership> <roleManager enabled="true" defaultProvider="CodeFirstRoleProvider"> <providers> <clear /> <add name="CodeFirstRoleProvider" type="CodeFirstRoleProvider" connectionStringName="DefaultConnection" /> </providers> </roleManager>
<entityFramework>
<defaultConnectionFactory type="System.Data.Entity.Infrastructure.SqlConnectionFactory, EntityFramework" />
</entityFramework>
顺便说一句,我能够通过 SQL Server 2008 成功连接到远程数据库,所以这个问题肯定是我的配置问题。
顺便说一句,我使用的是设置为“CreateDatabaseIfNotExists”的 DataContextInitializer。我已将其设置为此,因为在托管数据库上,我没有创建或删除数据库的权限,所以我所做的是我创建了本地创建的其中一个的备份(在 SQL Server Express ) 并使用还原功能将文件还原到我的托管数据库。所以我有一个数据库,它不能与我的应用程序一起使用。