我有一个首先使用Entity Framework DB的网站,我可以在我的本地计算机(开发计算机)上运行它就好了。我有edmx文件和所有内容。
今天我将网站部署到了爸爸,并使用MSSQL创建了一个新的数据库。现在,当网站尝试访问数据库时,我收到一条错误消息: 应用程序配置文件中的连接字符串“PCsTranformedEntities”不包含必需的providerName属性
此时我迷路了。提供者名称在连接字符串中不是有效的东西,我清楚地将它作为连接的一部分。这是我的网络配置中的全部内容(当然没有我的登录信息)
<add name="PCsTranformedEntities" connectionString="metadata=res://*/SiteModel.csdl|res://*/SiteModel.ssdl|res://*/SiteModel.msl;provider=System.Data.SqlClient;provider connection string="data source=******;initial catalog=PCsTransformed;persist security info=True;user id=j***;password=***;MultipleActiveResultSets=True;App=EntityFramework"" providerName="System.Data.EntityClient" />
我看了一遍谷歌:
Entity Framework: "ProviderName" in connection string required- all of the sudden?
http://www.sqlteam.com/forums/topic.asp?topic_id=179111
还有更多,但它们似乎指向我已有的东西。我有提供者名称,这是我从DB创建模型时由Entity Frameowrk创建的字符串。
我可以很好地从sql server 2012访问数据库,甚至可以在本地使用我的网站。
那我在这里错过了什么?为什么它会在我的本地计算机上正常运行但在它生效时抛出错误?
答案 0 :(得分:3)
我在搜索一段时间后发现了错误。
错误来自于爸爸改变网络配置文件。
Go daddy有一个功能,您可以单击asp.net设置以设置CAS级别。在此,它还会显示Web配置文件中的连接字符串。
我必须将CAS更新为Full才能使我的网站正常工作,所以我在这里设置了它,但是当你使用go daddy的asp设置页面改变任何内容时,它会覆盖web配置并为你改变它。
这对设置CAS有好处,但是当它也覆盖连接字符串并删除提供者名称等内容时会很糟糕。
基本上,当我更改CAS级别时,它也改变了我的连接字符串,并且在我不知情的情况下删除了提供者名称属性。因此,如果你主持go daddy,请不要使用他们的界面。手动更改Web配置,然后将其上载到服务器。 :)
答案 1 :(得分:0)
我有与godaddy服务器托管的类似问题。每次我部署到服务器时,它都在更改CAS,我不得不转到asp.net设置来更改CAS并修改web.config。后来我更新了用于CAS的web.config,因为我从来没有更新CAS。