2

Visual Studio2012から開発および公開しているMVC3Webアプリケーションプロジェクトがあります。これは最近、移行されたVS2010プロジェクトでした。

私のweb.configは<location inheritInChildApplications="false">タグを使用して設定されているため、仮想ディレクトリで実行されている子アプリケーションが設定を引き継ぐことはありません。

WebDeploy公開プロファイルを設定しました。これはVS2010で問題なく機能しましたが、VS2012から公開するとアプリケーションが壊れます。ノード内にすでにノードがある場合でも、<connectionStrings>前述の</location>タグを閉じた後にノードが追加されます。これにより、無効な構成ファイルが原因でアプリが破損します。<connectionStrings><location>

プロファイルを最初から再作成しようとしましたが、問題は解決しませんでした。

http://msdn.microsoft.com/en-us/library/dd465337.aspxで読んだ内容に基づいて、["]チェックボックスをオフにすると、公開プロセスに接続文字列を追加しないUse this connection string at runtimeように指示されますが、とにかく追加されます。

<location inheritInChildApplications="false">を使用していなければ、接続文字列が適切な場所に追加されるため、これは問題にならないだろうと考えています。

また、WebDeployを使用せずにファイルシステムに公開すると、公開されたWeb.Configが正しく作成され、追加の接続文字列ノードが追加されないことに注意してください。

この問題の既知の回避策はありますか?

4

1 に答える 1

1

私が疑ったように、この問題はinheritInChildApplications属性に関連しています。Visual Studio 2012 Web Deployのバグである可能性があります。これにより、デプロイプロセスは、指定しない場合でも、常に接続文字列を構成ファイルに追加します。私の場合、それはまた間違った場所に追加されていて、それが私のアプリケーションを壊しました。

この問題を修正するために、属性の使用を停止し、ここにリストされているオプションの1つを使用して構成の継承をオフにしました。

これでエラーなしで公開できますが、プロセスはデプロイされた構成ファイルに接続文字列を追加します。迷惑ですが、ショーストッパーではありません。

于 2012-12-08T20:12:19.683 に答える