2011-12-16 5 views
1

ビルドしているasp.net MVC3 Webアプリケーションで、環境固有の構成の束をしようとしています。私はプラットフォームに若干新しく、環境固有の設定で少し問題に走っています。Web.configの環境固有のcustomSectionプロパティ

私は3つのコンフィギュレーションファイルがあります。

  • Web.configファイルを
  • Web.Debug.config私は私のConnectionString設定を配置した

  • Web.Release.configデバッグ/リリースファイルとそれは動作するので、私はasp.netが少なくとも私のデバッグ/リリースセットアップのいくつかの概念を認識することを知っている。私はまた、このようにWeb.configファイルにいくつかのカスタム構成セクションを追加しました

    <configSections> 
        <section name="GitHubConfig" type="SmartGigs.Controllers.GitHubConfig" /> 
        <section name="JanRainConfig" type="SmartGigs.Services.JanRainConfig" /> 
        </configSections> 
    

    それから私は実際にWeb.configファイルで、このようにそれらを定義します。

    <GitHubConfig ClientId="c" Secret="s" /> 
    

    そしてロードしようこれらは次のようになります。

    var jrConfig = (JanRainConfig)WebConfigurationManager.GetSection("JanRainConfig"); 
    var gitHubConfig = (GitHubConfig) WebConfigurationManager.GetSection("GitHubConfig"); 
    

    最後に、Web.Debug.configにDebug固有のプロパティを追加します。

    <JanRainConfig Key="key" TokenUrl="http://localhost:55739/Account/LogOn" /> 
    

    問題

    私はWeb.configファイルで定義されたプロパティを取得する場合、それは完璧に動作します。 Web.configでプロパティを定義するだけ、またはWeb.Debug.configでプロパティを定義して上書きしようとすると(xdt:Transform = "Replace"を追加する)、プロパティ設定は空白(前者の場合)またはWeb.configの設定(後者) - Web.Debug.configの設定が無視されているかのように。

    私がしようとしていることを達成する正しい方法は何ですか?

  • +0

    AFAIKプラットフォーム固有の設定は、Visual Studioを使用してアプリケーションを公開する場合にのみ認識されます。あなたの質問から私はあなたがVSからプロジェクトを開始しているのか、それを実際にIISに公開したのかを推測することはできません。 –

    +0

    私はVisual Studioでそれを開始しています。実際、あなたのコメントは、私の問題を解決する道を私に導いてくれました。私はWeb.configトランスフォームの仕組みがどう元気に誤解されていましたか。あなたのコメントを回答に変換するなら、私はそれを受け入れます。ありがとう! –

    答えて

    2

    Web.config変換は、プロジェクトの公開時にのみ適用されます。あなたは確かにこれを間違って取得するために、最初のものではありません(私が含まれています)。デフォルトのweb.configでデバッグ設定を使用し、.release.configファイルにカスタムロジックのみを適用することをお勧めします。

    変換されたweb.configは、プロジェクトを直接開始するときにVSによってピックアップされませんが、変換プロセスはカスタムMSBuildタスクであるため、コンパイル時に実行を追加できる可能性があります。

    関連する問題