底层提供程序在Open上失败

时间:2012-10-29 19:18:14

标签: c# silverlight entity-framework silverlight-5.0 entity-framework-5

我在EntityFramework平台上使用Windows Azure。它在LOCAL模式下运行良好,但是当我尝试在Web上运行我的Silverlight应用程序时。我收到一个错误:

  

底层提供程序在Open上失败。

<configuration>
  <system.webServer>
    <modules runAllManagedModulesForAllRequests="true">
      <add name="DomainServiceModule" preCondition="managedHandler" type="System.ServiceModel.DomainServices.Hosting.DomainServiceHttpModule, System.ServiceModel.DomainServices.Hosting, Version=4.0.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35" />
    </modules>
    <validation validateIntegratedModeConfiguration="false" />
  </system.webServer>
  <appSettings>
    <add key="aspnet:UseTaskFriendlySynchronizationContext" value="true" />
    <add key="ValidationSettings:UnobtrusiveValidationMode" value="WebForms" />
  </appSettings>
  <system.web>
    <httpModules>
      <add name="DomainServiceModule" type="System.ServiceModel.DomainServices.Hosting.DomainServiceHttpModule, System.ServiceModel.DomainServices.Hosting, Version=4.0.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35" />
    </httpModules>
    <customErrors mode="Off" />
    <compilation debug="true" targetFramework="4.5">
      <assemblies>
        <add assembly="System.Data.Entity, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089" />
      </assemblies>
    </compilation>
    <httpRuntime requestValidationMode="4.5" targetFramework="4.5" encoderType="System.Web.Security.AntiXss.AntiXssEncoder, System.Web, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a" />
    <pages controlRenderingCompatibilityVersion="4.5" />
    <machineKey compatibilityMode="Framework45" />
  </system.web>
  <system.serviceModel>
    <serviceHostingEnvironment aspNetCompatibilityEnabled="true" multipleSiteBindingsEnabled="true" />
  </system.serviceModel>
  <connectionStrings>
    <add name="DatabaseEntities" connectionString="metadata=res://*/Model.csdl|res://*/Model.ssdl|res://*/Model.msl;provider=System.Data.SqlClient;provider connection string=&quot;data source=lnqg2ulkjr.database.windows.net;initial catalog=BuilderDatabase;persist security info=True;user id=XXXXX;password=XXXXX;MultipleActiveResultSets=True;App=EntityFramework&quot;" providerName="System.Data.EntityClient" />
  </connectionStrings>
</configuration>

我正在检查这是与Integrated Security的连接字符串中的问题,但在我的情况下,我没有该属性。可能是什么错误?

1 个答案:

答案 0 :(得分:3)

此错误来自实体 - 它与Silverlight几乎没有关系。它发生在两件事之一发生时:

  • 实体尝试登录您指向的数据库,并被拒绝权限/无法找到服务器/无法找到实例/有其他连接错误
  • 实体已成功登录,但无法找到其识别的数据模型

第二个应该很容易检查,因为你有一个工作的本地。如果您本地的数据模型与“生产”环境中的数据模型相同,那么该部分就会得到处理。如果您有不同的表,则可能会遇到一些问题。如果它们缺少您已编码到Entity数据模型中的列,则这是真的。在许多情况下,实体会容忍额外的列和额外的表,尽管这会根据情况发生很大变化,所以YMMV。但是,如果实体期望某些东西存在而不是,那么它每次都会快速崩溃。

我更大的怀疑是那里有相当棒的连接字符串。您应该能够检查InnerException有关数据库服务器正在引发的特定抱怨的内容。如果不是,我会把它扯到一个控制台应用程序中,并尝试连接一个简单SqlConnection做一个简单的Select count(Id) from dbo.SmallTable。这将允许您隔离连接问题并在一个良好的受限环境中处理它们。在对连接问题进行分类之后,您可以粘贴连接字符串 - 现在希望不那么容易混淆 - 重新进入并继续。