2015-06-22 69 views
0

我正在构建一个C#MVC代码优先的网站,并已使用FTP将其部署到主机(aspnix.com)。初始启动页面加载,但如果我尝试加载任何需要访问数据库的页面,我只会收到一个错误:“错误。处理请求时发生错误。”代码优先连接字符串问题

我在本地构建数据库的同时播种数据库,并将mdf文件复制到服务器上的App_Data文件中。如果可以避免的话,我宁愿不必再种子,因为种子数据涉及几个ajax调用几个API以及其他一些网页抓取。

下面是我在本地使用ConnectionString:

<add name="(contextClass)Context" connectionString="Data Source=(LocalDb)\v11.0;Initial Catalog=|DataDirectory|\(projectName).Context.(contextClass).mdf;Integrated Security=SSPI;Database=(projectName).Context.(contextClass);AttachDBFilename=|DataDirectory|\(projectName).Context.(contextClass).mdf" providerName="System.Data.SqlClient" /> 

我试图以多种方式来改变这一点,包括使用建议从http://www.connectionstrings.com/sql-server/以及这里SO,但我刚刚得到的错误信息。我不认为它很重要,但我使用SQL Server来访问数据库,而不是Express。任何建议?

编辑:
我会后一对夫妇,我的情况下,已经尝试部署的ConnectionStrings帮助的:

<add name="(contextClass)Context" connectionString="Data Source=.\SQLExpress;Initial Catalog=|DataDirectory|\(projectName).Context.(contextClass)Context.mdf;Integrated Security=SSPI;Database=(projectName).Context.(contextClass)Context;AttachDBFilename=|DataDirectory|\(projectName).Context.(contextClass)Context.mdf" providerName="System.Data.SqlClient" /> 

又如没有工作:

<add name="(contextClass)Context" connectionString="Data Source=.\SQLExpress;Database=(projectName).Context.(contextClass)Context;AttachDBFilename=|DataDirectory|\(projectName).Context.(contextClass)Context.mdf;Trusted_Connection=Yes" providerName="System.Data.SqlClient" /> 

编辑: 我注意到服务器上的web.config文件上正在生成以下附加连接字符串。

<add name="(projectName).Context.(contextClass)Context" connectionString="(projectName).Context.(contextClass)Context_ConnectionString" 
    providerName="System.Data.SqlClient"/> 

这可能会导致任何问题?

更新: 名称太长(例如(projectName).Context。(contextClass)Context),所以我将它们改为just(contextClass)Context,重建结束重新发布,这似乎很奇怪。我注意到,本地它仍然运行完美,我仍然可以使用SQL Server访问localDB。

在服务器上,我仍然收到错误,但发生了变化。我现在得到:

Exception: A network-related or instance-specific error occurred while establishing a connection to SQL Server. The server was not found or was not accessible. Verify that the instance name is correct and that SQL Server is configured to allow remote connections. (provider: SQL Network Interfaces, error: 26 - Error Locating Server/Instance Specified) 

我不知道这是好还是坏?

+0

您使用了不正确的连接字符串。请确保您使用您的托管服务提供商为您提供的连接字符串。我会建议您联系他们的支持人员,并询问您需要使用的正确连接字符串。 –

回答

0

EF支持一些初始化选项。其中之一是创建一个数据库。您应该使用该选项,但不能使用LocalDb。正如@Pinch所说,这不是为了生产。您需要做的另一件事是与您的提供程序一起检查SQL Server的安装位置,并将它用作连接字符串中的数据源。看看这篇关于初始化程序的EntityFramework Tutorial的文章http://www.entityframeworktutorial.net/code-first/database-initialization-strategy-in-code-first.aspx

+0

谢谢侯赛因。我试图使用App_Data文件夹来保存mdf文件并访问该文件。根据您的建议,我切换到使用主机提供的MSSQL服务器,我可以连接。我仍然不明白为什么App_Data方法不起作用,但至少我正在运行。现在种子.... – nurdyguy

1

localdb并不意味着部署。

改变你的连接字符串到一个真正的SQL Server /快递串

codefirst应自动建立自己的数据库,但要确保你有足够的权限。

+0

我替换了(LocalDb)部署的东西(对不起,我应该更清楚)。我会发布一些我尝试过的字符串。 – nurdyguy