无法连接到SQL Server AppHarbor

时间:2013-03-15 18:59:26

标签: mysql sql-server connection-string appharbor

 <entityFramework>
    <defaultConnectionFactory  type="System.Data.Entity.Infrastructure.LocalDbConnectionFactory, EntityFramework">
      <parameters>
        <parameter value="v11.0" />
      </parameters>
    </defaultConnectionFactory>
  </entityFramework>

以上是相关的吗?我只是把它放在那里,以免进一步搞砸。 但下面是我感兴趣的,它是我本地sql server的连接字符串

  <connectionStrings>
    <add name="ApplicationServices" connectionString="Data Source=localhost;Initial Catalog=TestDB;User ID=lews;Password='therin'" providerName="System.Data.SqlClient" />

“在Sequelizer上创建数据库时,您可以指定连接字符串别名。这可以在Sequelizer附加页面上完成(按照应用程序概述中的”转到...“链接)。您将此名称设置为配置文件中连接字符串的名称,我们将在部署代码时自动将其替换为Sequelizer连接字符串。“

这是Appharbor文档的片段。因此,我假设AppHarbor会自动将数据源,初始目录,用户ID和密码替换为正确的值。但由于某种原因它无法连接。

下面是我这次使用MySQL的另一个字符串,我再次假设AppHarbor应该自动注入正确的值,但它给出的错误是:

“在应用程序配置文件中找不到PeopleEntities” 到底是怎么回事?

 <add name="PeopleEntities" connectionString="metadata=res://*/Context.People.csdl|res://*/Context.People.ssdl|res://*/Context.People.msl;provider=MySql.Data.MySqlClient;provider connection string=&quot;server=localhost;user id=root;database=people&quot;" providerName="System.Data.EntityClient" />
      </connectionStrings>

顺便说一下,名称“PeopleEntities”和“ApplicationServices”在AppHarbor上用作别名。 我不知道如何使用文档中给出的代码,数据库不是我的东西..如何使用本地和远程conn字符串?在代码中我在哪里构建字符串并注入它?每当我创建一个DBContext实例时,我是否必须这样做?等。

任何想法都会很棒,谢谢!

修改 顺便说一句,如果我硬编码连接字符串,在app.config中并使用wcftestclient,它可以工作,它会查询数据库..但这不是一个好主意,显然连接字符串可以在没有警告的情况下改变。

无论如何,如果我使用硬编码的字符串部署它并使用我的网站连接到数据库..它不会查询SQL服务器..真的很困惑:(

1 个答案:

答案 0 :(得分:0)

http://support.appharbor.com/discussions/problems/2687-solved-mysql-provider-with-entity-framework-problem   对于实体框架: 这篇标记非常重要:

 <system.data>
          <DbProviderFactories>
            <clear />
            <add name="MySQL Data Provider" invariant="MySql.Data.MySqlClient"
            description=".Net Framework Data Provider for MySQL"
            type="MySql.Data.MySqlClient.MySqlClientFactory, MySql.Data, 
            Version=6.4.4.0, Culture=neutral, PublicKeyToken=c5687fc88969c44d" />
          </DbProviderFactories>
        </system.data>

哦确保MySQL连接器组件是本地的。它也应该在你的web.config文件中,更加确定它放在你的WCF的App.config中。在连接字符串中使用相同的插件别名。

对于SQL Server插件: 您需要在web.config中使用此标记:

<system.web>
    <compilation debug="true" targetFramework="4.5" />
    <httpRuntime targetFramework="4.5"/>
     <membership>
      <providers>
        <clear />
        <add name="AspNetSqlMembershipProvider" type="System.Web.Security.SqlMembershipProvider" connectionStringName="ApplicationServices" enablePasswordRetrieval="false" enablePasswordReset="true" requiresQuestionAndAnswer="false" requiresUniqueEmail="false" maxInvalidPasswordAttempts="5" minRequiredPasswordLength="6" minRequiredNonalphanumericCharacters="0" passwordAttemptWindow="10" applicationName="/" />
      </providers>
    </membership>
    <profile>
      <providers>
        <clear />
        <add name="AspNetSqlProfileProvider" type="System.Web.Profile.SqlProfileProvider" connectionStringName="ApplicationServices" applicationName="/" />
      </providers>
    </profile>
    <roleManager enabled="true">
      <providers>
        <clear />
        <add connectionStringName="ApplicationServices" applicationName="/" name="AspNetSqlRoleProvider" type="System.Web.Security.SqlRoleProvider" />
        <add applicationName="/" name="AspNetWindowsTokenRoleProvider" type="System.Web.Security.WindowsTokenRoleProvider" />
      </providers>
    </roleManager>
  </system.web>

你应该好好去......