VS2010 веб-развертывание аргумента строки подключения не может быть пустым или пустым
У вас возникли проблемы с развертыванием веб-сайта на сервере r2 windows 2008 r2 под управлением IIS7. Я ранее размещал другой сайт на этом сервере. Развертывание сети - это подключение и копирование моих файлов на сервер, но я вижу следующие ошибки.
1 The 'Connection String' argument cannot be null or empty
2 Web deployment task failed.((20/07/2012 14:19:16) An error occurred when the request was processed on the remote computer.)
(20/07/2012 14:19:16) An error occurred when the request was processed on the remote computer. Could not find a part of the path 'C:\Users\Me\Documents\Visual Studio 2010\Projects\MySite\MySiteClient\obj\Release\AutoScripts\EFDbContext-Deployment_SchemaOnly.sql'. 0 0 MySiteClient
Я проверил, что путь существует на моей локальной машине.
Я попытался опубликовать с помощью преобразований web.config и с помощью функций xdt: transform для установки строк удаленного сервера.
Я также явно установил строки подключения как для исходной, так и для исходной базы данных на вкладке "Пакет/Публикация SQL" и не понимаю, в чем проблема.
Любые идеи?
Ответы
Ответ 1
Это происходило прямо сейчас, и мне удалось изолировать проблему... после добавления новой строки подключения SQL Server
в моем Web.config
я начал испытывать эту самую ошибку при попытке развернуть на удаленный сервер.
Когда я открыл веб-развертывание профиля публикации в Visual Studio 2012, я заметил на вкладке Settings
, что он установил эту опцию: Использовать эту строку соединения во время выполнения (обновить адрес Web.config).
Странно, что это было автоматически настроено VS 2012...
Чтобы решить эту проблему, просто снимите флажок, чтобы флажок и развертывание сети снова начали работать.
![enter image description here]()
Ответ 2
В дополнение к ответу Leniel, если вы не используете SqlClient или Entity Framework Code First и, таким образом, не видите флажки, временно установите имя поставщика в строке подключения web.config к System.Data.SqlClient и затем вернитесь к настройкам публикации, чтобы снять флажок (и).
Ответ 3
У меня была такая же проблема:
2 > C:...\Microsoft.Web.Publishing.targets(4270,5): Ошибка: аргумент "db-Web.config Connection String" не может быть пустым или пустым. 2 > C:...\Microsoft.Web.Publishing.targets(4270,5): Ошибка: аргумент "dbAudit-Web.config Connection String" не может быть пустым или пустым. 2 > C:...\Microsoft.Web.Publishing.targets(4270,5): Ошибка: аргумент "dbLog-Web.config Connection String" не может быть пустым или пустым.
как я использовал:
<connectionStrings>
<add name="db" providerName="MySql.Data" connectionString="server=mysql.gko.local;user=maindk;database=gavekortet;port=3306;password=123456" />
<add name="dbLog" providerName="MySql.Data" connectionString="server=mysql.gko.local;user=maindk;database=logs;port=3306;password=123456" />
<add name="dbAudit" providerName="MySql.Data" connectionString="server=mysql.gko.local;user=maindk;database=audit;port=3306;password=123456;pooling=false" />
</connectionStrings>
и поскольку я читал здесь, проблема заключалась в отношении публикации профиля, затем я открыл файл .pubxml
, и я нашел:
<ItemGroup>
<MSDeployParameterValue Include="$(DeployParameterPrefix)db-Web.config Connection String" />
<MSDeployParameterValue Include="$(DeployParameterPrefix)dbAudit-Web.config Connection String" />
<MSDeployParameterValue Include="$(DeployParameterPrefix)dbLog-Web.config Connection String" />
</ItemGroup>
добавьте <UpdateDestWebConfig>False</UpdateDestWebConfig>
к каждому node, поэтому он станет следующим:
<ItemGroup>
<MSDeployParameterValue Include="$(DeployParameterPrefix)db-Web.config Connection String">
<UpdateDestWebConfig>False</UpdateDestWebConfig>
</MSDeployParameterValue>
<MSDeployParameterValue Include="$(DeployParameterPrefix)dbAudit-Web.config Connection String">
<UpdateDestWebConfig>False</UpdateDestWebConfig>
</MSDeployParameterValue>
<MSDeployParameterValue Include="$(DeployParameterPrefix)dbLog-Web.config Connection String">
<UpdateDestWebConfig>False</UpdateDestWebConfig>
</MSDeployParameterValue>
</ItemGroup>
просто удалив эту запись, все снова работало...
Ответ 4
Ни один из предоставленных решений не помог мне.
Наконец-то я обнаружил, что в моей локальной Web.config
была пустая строка подключения по умолчанию LocalMySqlServer
(возможно, она помещена в пакет Mysql.Datastrong > NuGet).
После удаления выделенной строки ниже я смог успешно опубликовать.
![введите описание изображения здесь]()
Ответ 5
У меня была та же проблема, когда я развернул веб-приложение на веб-сервере Azure. Я решил это, создав новый сервер. В этот момент я понял, что раньше было другое приложение на этом сервере. Это приложение использовало имя-контекст, который не был зашифрован вторым приложением, так что он продолжал искать строку соединения, которая была перезаписана вторым приложением. Я хочу, чтобы очистка сервера могла решить проблему.