2012-07-04 3 views
1

Мой код работает локально, со строкой подключения, указывающей на AZURE SQL SERVER. Но как только я публикую на Azure Web Site, каждый просмотр с EF Model вызывает эту ошибку. Я изменил " на «как одно из предлагаемых решений, ничего не работает. Im застрял !!Entity Framework 4.3 Windows Azure Ключевое слово не поддерживается: 'metadata'

System.Data.EntityException: The underlying provider failed on ConnectionString. ---> System.ArgumentException: Keyword not supported: 'metadata'. 
    at System.Data.Common.DbConnectionOptions.ParseInternal(Hashtable parsetable, String connectionString, Boolean buildChain, Hashtable synonyms, Boolean firstKey) 
    at System.Data.Common.DbConnectionOptions..ctor(String connectionString, Hashtable synonyms, Boolean useOdbcRules) 
    at System.Data.SqlClient.SqlConnectionString..ctor(String connectionString) 
    at System.Data.SqlClient.SqlConnectionFactory.CreateConnectionOptions(String connectionString, DbConnectionOptions previous) 
+0

Пожалуйста, разместите строку подключения. – mawburn

ответ

2

Если у вас есть MultipleActiveResultSets = True в строке подключения, пожалуйста, удалите это и та же строка подключения должна работать в Windows Azure. Я обнаружил, что это самая распространенная ошибка в вашей ситуации.

Если это не так, отправьте строку соединения, и я посмотрю.

+0

Установка его на False не сработала, но СНЯТИЕ Решено! Любое понимание того, почему это происходит, и связано ли это с Azure? –

+0

В основном из-за того, что среда выполнения Windows Azure не распознает ее должным образом и вызывает эту ошибку. Он ответ решил вашу проблему, рад, если вы ее примете. Благодарю. – AvkashChauhan

2

У меня была такая же проблема, как и у ОП, но его решение не сработало для меня.

Это была проблема с строкой соединения, но не с кавычками.

Поскольку у меня ушло два дня, чтобы решить, может быть, это поможет кому-то еще:

Строка соединения, которая работает [для моего ASP.NET MVC 4.5/Entity Framework 5.0 приложения при размещении на Azure (я разрабатываю против SQL Server 2012 локально, но перенести базу данных в базу данных Azure SQL (используя SQL Database Migration Wizard)). Я использую базу данных первых, чтобы создать свой EDMX-файл (я генерировать) модель данных (из базы данных)] является:

<add name="MYPROJECTENTITIES" connectionString="**metadata=**res://*/MODELS.MYPROJECTMODEL.csdl|res://*/MODELS.MYPROJECTMODEL.ssdl|res://*/MODELS.MYPROJECTMODEL.msl;provider=System.Data.SqlClient;provider connection string=&quot;Data Source=tcp:B6JD5K5EP4.database.windows.net,1433;Initial Catalog=MYPROJECT_DB;Integrated Security=False;User [email protected];Password=MYPASSWORDABC123;**MultipleActiveResultSets=True**;Encrypt=True;TrustServerCertificate=False&quot;" providerName="System.Data.EntityClient"/> 

Текст в верхнем регистре мой Azure информация. Очевидно, вам нужно будет использовать свои собственные.

Эта часть строки соединения дала мне кошмары, и это может быть причиной вашей проблемы, а также:

res://*/Models.MyProjectModel.csdl|res://*/Models.MyProjectModel.ssdl|res://*/Models.MyProjectModel.msl 

Эти ссылки должны быть точно правы. Позвольте мне повторить: Эти ссылки должны быть в порядке!

После прочтения this article from 2008 («Устранение Entity Framework Строки подключения»), я использовал .NET Reflector заглянуть внутрь MyProjectModel.dll (имя моей .dll (вероятно, отличается в проекте), как он предполагает, и, уверен, достаточно, строка подключения (которая была автоматически создана для меня Entity Framework!) была неправильной: она не включала префикс. Как только я добавил модели. префикс (это как .csdl/.msl/.ssdl называются внутри моего .dll (вероятно, разные в вашем)), все отлично работает. Посмотрите в свою .dll и посмотрите, совпадают ли имена. Если нет, измените их в соответствии с тем, что появилось в .dll. (Прочтите статью выше, если то, что я говорю, недостаточно ясно.)

1

Мне пришлось изменить тип строки подключения на пользовательский на портале Azure.

enter image description here

0

Вот мой ответ на другой SO нить, которая может быть полезной. Шаги, о которых я упоминал, включают сквозную конфигурацию строки подключения на Azure и динамическое ее использование. И да, это исправляет ошибку, о которой идет речь!

https://stackoverflow.com/a/37938912/3785895

Дополнительная информация: Наряду с изменением ProviderName, есть несколько дополнительных битов, мы, возможно, потребуется проверить. Кажется, Azure обновляет файл web.config после публикации приложения API/Web App.

Смежные вопросы