0

我使用EntityFrameworkWindows Azure平台。它在LOCAL模式下效果很好,但是当我试图在Web上运行我的Silverlight应用程序时。我得到一个错误:底层提供商开放失败

The underlying provider failed on 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连接字符串中存在的问题,但在我来说,我没有这样的属性。什么可能是错误?

+3

你不应该把你真正的用户名/密码放在连接字符串的例子中,我在编辑时为你编辑了它,但别忘了! – EkoostikMartin

+0

您的模型是否与您的数据库匹配?你确定用户/密码是正确的吗? – Cody

+0

@EkoostikMartin对不起,我错过了! –

回答

3

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

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

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

我更大的怀疑将是那里相当真棒连接字符串。您应该能够检查InnerException上的内容,以了解数据库服务器正在引发的具体困难。如果不是的话,我会把它翻译成一个控制台应用程序,然后尝试连接一个简单的简洁的,做一个简单的Select count(Id) from dbo.SmallTable。这将使您能够隔离连接问题,并在良好的受限环境中处理它们。在对连接问题进行排序后,您可以粘贴连接字符串 - 现在希望不那么容易混淆 - 返回并继续。

相关问题