2

ASP.NET MVC 3 Web アプリケーションでは、web.configファイルからの設定が完全​​に無視され、既定値が適用されるという問題があります。ファイルの関連部分は次のとおりです。

...
<configuration>
    <configSections>
        <section name="MyProject.Properties.Settings" type="System.Configuration.ClientSettingsSection, System, Version=4.0.0.0, Culture=neutral, PublicKeyToken=..." requirePermission="false" />
...
<applicationSettings>
    <MyProject.Properties.Settings>
        <setting name="MySetting" serializeAs="String">
            <value>MyValue</setting>
        </setting>
    ...

プロジェクト名が正しいことを確認し、Web サーバー ユーザーがファイルにアクセスできることも確認しました (ProcessMonitorアクセスの監視に使用)。

この投稿もチェックしましたが、それ以上はわかりませんでした。web.config設定が無視される可能性がある他の星座はありますか? 上記のアプローチ (つまり、1 つ以上の構成セクションを参照) で問題が発生したことはありませんが、今日、この問題を解決するために数時間を費やしましたが、どこが間違っているのかわかりません。

更新 1

@jbl のコメントに従って、次のように設定にアクセスしようとしました。

((ClientSettingsSection)ConfigurationManager.GetSection( "applicationSettings/MyProject.Properties.Settings" )).Settings.Get("MySetting")

残念ながら、ローカル テストでは、これは (これも) 期待どおりに機能しましたが、サーバー上では - ここでも - デフォルト値が使用され、web.config の applicationSettings の下にある値は無視されました。

更新 2

IIS から Web アプリケーションを削除し、新しいアプリケーションを作成しても機能しませんでした。

4

4 に答える 4

1

私の場合の答えは簡単でした。今は恥ずかしい思いをしていますが、何が間違っていたのかを見落としたのは私だけではなかったことを嬉しく思います。

  • WCF Web サービス エンドポイントにも同様のエントリがいくつかありました
  • サーバーで使用した web.config のバージョンは最新のものではありませんでした
  • 使用されている web.config には 4 つのエントリがあり、最新のものには 5 つのエントリがありました
  • 残念ながら、私の場合はコードで最初に使用された最新のエントリのエントリが欠落しているという問題しかありませんでした
  • バイナリにコンパイルされたデフォルト設定により、期待した値ではなく、値を取得しました

欠落している設定でファイルを更新するとすぐに、すべて正常に機能したので、混乱を招いて申し訳ありません(少なくとも50ポイントかかりました...)。

于 2013-10-20T11:02:11.460 に答える
1

私の場合、プロジェクトの名前を変更したため、内部に保存されているデフォルトを使用してアセンブリ ファイルが見つからなくなりました。たとえば、web.config は言う

<section name="MyProject.Properties.Settings"...

しかし、私のアセンブリは今: Company.MyNewProject であるため、構成ファイルでも変更する必要があります。

<section name="Company.MyNewProject.Properties.Settings"
于 2014-11-14T00:51:52.133 に答える
0

試していただけますか:

ConfigurationManager.OpenExeConfiguration("C:\inetpub\wwwroot\[drill down to Web.config path on server]").GetSection(etc);

Web.config から読み取っていると思っていた場所で問題が発生したことは知っていますが、実際には MyDll.dll.config または MyExe.exe.config などの意図しないものから読み取っていました。

その行がまだ予期しない結果を生成する場合は、コードをステップ実行して (Visual Studio デバッガーを Web アプリケーションにアタッチ)、その行が実際にヒットしていることを確認することをお勧めします。

于 2013-10-08T15:18:21.227 に答える
0

アップデートでこれらのアイデアを取り上げたかもしれませんが、明確にしたいと考えています。

思いつくのは以下です。

  1. サイト フォルダー全体に分散している複数の web.config ファイルがあります。見ているものを上書きしている他の web.config ファイルがないことを確認してください。これらはアプリケーション内の他のフォルダーにあるか、変換構成ファイルがある可能性があります
  2. サーバーにデプロイするとき、既存のファイルを上書きしないため、サーバーのどこかに既に web.config ファイルがあります。どのように展開していますか?
  3. 優先されるグローバル web.config ファイルがあります。remove タグを使用して、不要な設定を削除します: http://msdn.microsoft.com/en-us/library/aa309404(v=vs.71).aspx

       <configSections>
           <remove name="CommerceServer/application"/>
    

同様に、クリアタグも試してみてください。http://msdn.microsoft.com/en-us/library/aa903345(v=vs.71).aspx

<configuration>
     <configSections>
         <clear/>
于 2013-10-08T15:41:22.293 に答える