Sql error: connection string does not contain the required providerName attribute

Sql error: connection string does not contain the required providerName attribute

我有一个网站首先使用 Entity Framework 数据库,我可以 运行 它在我的本地计算机(开发计算机)上就好了。我有 edmx 文件和所有东西。

今天我将站点部署到 go daddy 并使用 MSSQL 创建了一个新数据库。现在,当网站尝试访问数据库时,我收到一条错误消息: 应用程序配置文件中的连接字符串 'PCsTranformedEntities' 不包含所需的 providerName 属性

此时我迷路了。提供者名称在连接字符串中不是有效的东西,我显然将它作为连接的一部分。这是我的网络配置的全部内容(当然没有我的登录信息)

<add name="PCsTranformedEntities" connectionString="metadata=res://*/SiteModel.csdl|res://*/SiteModel.ssdl|res://*/SiteModel.msl;provider=System.Data.SqlClient;provider connection string=&quot;data source=******;initial catalog=PCsTransformed;persist security info=True;user id=j***;password=***;MultipleActiveResultSets=True;App=EntityFramework&quot;" providerName="System.Data.EntityClient" />

我都看过了google:

Entity Framework: "ProviderName" in connection string required- all of the sudden?

The connection string 'MyConnection' in the application's configuration file does not contain the required providerName attribute."

http://www.sqlteam.com/forums/topic.asp?topic_id=179111

还有很多,但它们似乎指向我已经拥有的东西。我有提供者名称,这是当我从数据库创建模型时由 Entity Frameowrk 创建的字符串。

我可以从 sql 服务器 2012 访问数据库,甚至可以在本地使用我的网站。

那么我在这里缺少什么?为什么它 运行 在我的本地计算机上运行良好,但在运行时却抛出错误?

找了一会发现错误

错误来自 go daddy 更改网络配置文件。

Go daddy 有一个功能,您可以点击asp.net设置来设置CAS级别。在此它还显示来自网络配置文件的连接字符串。

我必须将 CAS 更新为 Full 才能让我的网站正常工作,所以我在此处设置了它,但似乎当您使用 go daddy 的 asp 设置页面更改任何内容时,它会覆盖 Web 配置并更改它为你。

这对设置 CAS 等很有用,但当它还覆盖连接字符串并删除诸如提供程序名称之类的内容时就不好了。

基本上,当我更改 CAS 级别时,它也会更改我的连接字符串并在我不知情的情况下删除提供程序名称属性。因此,如果您使用 go daddy 托管,请不要使用他们的界面。手动更改网络配置,然后将其上传到服务器。 :)

我在 godaddy 服务器上遇到了类似的问题。每次我部署到服务器时,它都会更改 CAS,我必须转到 asp.net 设置来更改 CAS,它会修改 web.config。后来我为 CAS 更新了 web.config,因为那时我再也不需要更新 CAS了。