web-dev-qa-db-ja.com

VS2010Webデプロイ接続文字列引数をnullまたは空にすることはできません

IIS7を実行しているWindows2008r2サーバーへのWebサイトの展開に問題があります。以前、このサーバーに別のサイトを展開しました。 Webデプロイはファイルをサーバーに接続してコピーしていますが、次のエラーが表示されます。

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]タブで宛先データベースとソースデータベースの両方の接続文字列を明示的に設定しましたが、問題が何であるかについて迷っています。

何か案は?

27
MPD

これは今私に起こっていて、問題を切り分けることができました...新しいSQL Server接続文字列をWeb.configに手動で追加した後、リモートサーバーにデプロイしようとするとこのエラーが発生し始めました。

Visual Studio 2012でWebデプロイの発行プロファイルを開いたとき、Settingsタブでこのオプションが設定されていることに気付きました:実行時にこの接続文字列を使用します(更新先Web.config)

不思議なことに、これはVS2012によって自動的に設定されました...

この問題を解決するには、チェックボックスをオフにすると、Webデプロイが再び機能し始めます。

enter image description here

44

Lenielの回答に加えて、SqlClientまたはEntity Framework Code Firstを使用していないためにチェックボックスが表示されない場合は、web.configの接続文字列のproviderNameを一時的にSystem.Data.SqlClientに設定してから、戻ってください。チェックボックスをオフにするには、公開設定に移動します。

15
Koen Schepens

私は同じ問題を抱えていました:

2> C:...\Microsoft.Web.Publishing.targets(4270,5):エラー:「db-Web.config接続文字列」引数をnullまたは空にすることはできません。 2> C:...\Microsoft.Web.Publishing.targets(4270,5):エラー:「dbAudit-Web.config接続文字列」引数をnullまたは空にすることはできません。 2> C:...\Microsoft.Web.Publishing.targets(4270,5):エラー:「dbLog-Web.config接続文字列」引数をnullまたは空にすることはできません。

私が使用していたように:

<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>を追加すると、次のようになります。

<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>

このエントリを削除するだけで、すべてが再び機能していました...

12
balexandre

提供されたソリューションはどれも私を助けませんでした。

私はついに私の地元でそれを発見しましたWeb.configLocalMySqlServerと呼ばれる空のデフォルト接続文字列がありました(おそらくMysql.DataNuGetパッケージによってそこに配置されます)。

下の強調表示された行を削除した後、正常に公開できました。

enter image description here

4
silkfire

WebアプリケーションをAzureWebサーバーにデプロイしたときにも同じ問題が発生しました。新しいサーバーを作成して解決しました。その時点で、私は以前にそのサーバーに別のアプリケーションがあることに気づきました。そのアプリケーションは、2番目のアプリケーションによって上書きされなかったコンテキスト名を使用したため、2番目のアプリケーションによって上書きされた接続文字列を探し続けました。サーバーをクリアすると問題が解決する可能性があると思います。

0

私はまったく同じ問題を抱えていました-VS2017ですぐに。

管理者としてVSを実行していたことが原因であることがわかりました。アプリを閉じて正常に再起動すると、すべて正常に戻りました。

0
John Ohara