2016-10-07 13 views
1

紺碧のWebサイト(MVC)が設定されていて、紺色に展開されたソリューションにWebAPIプロジェクトを追加しようとするまで、間違ったWeb.configを使用して、アジールにアプリケーションをデプロイ

\ ------ IsApplicaiton(-----物理--- IsApplication

  • /-----サイト\ wwwrootの仮想
    1. のように私の仮想ディレクトリマッピングが見えますはい)[パスのためのMVC プロジェクト]アプリケーション
    2. /API ----サイト\サービス\ ------- IsApplication(なし)
    3. /API /コード------サイト\サービス\ code \ ------- IsApplication(yes)[WebAPIプロジェクトのパス]
  • MVCアプリケーションはうまくいきますが、WebAPIアプリケーション(VS WebApplication - > WebAPI2の空の足場です)はありません。 WebApiのweb.configを修正してカスタムエラーページを無効にした後、問題はMVCアプリケーションのweb.configに含まれる名前空間であることがわかりました(もちろん、WebAPIプロジェクトは参照を持たず、そうでなければなりません)。しかし、なぜWebAPIはそれ自体があるときにweb.config MVCアプリケーションに座って自分自身を悩ますのですか?

    +1

    をあなたは同じでウェブAPIを実行していた場合はそれを行う方法の例は、SO答えて、この中に見つけることができますsite/apppoolをMVCとして使用する場合、App_Start()メソッドで必要な優先順位があります。しかし、あなたがそうしていないように聞こえる。あなたは例外の詳細を含めることができますか? –

    +0

    私はAzureのapppoolsとその仕組みについて知らない。しかし、私がしたいのは、1つのサイトの下でアプリケーションをほとんどホストしないことです。 MVCはWebAPIアプリケーションのクライアントであるはずです。限り、私は親仮想ディレクトリではなく、親フォルダから設定を継承するweb.configの継承を理解しています。 – user2184057

    答えて

    1

    アプリケーション内でWeb.configの設定が「ウォーターフォール」になっています。したがって、ルート '/'でアプリケーションをホストし、その下にホストされている別のアプリケーション(つまり '/ api/code')を使用している場合、ルートWebアプリケーションのweb.configのすべての設定が、サブアプリケーションのweb.config。アプリケーションの物理的な場所は、この動作とは関係ありません。これらのすべては、仮想ディレクトリ構造によって駆動されます。このため、WebAPIアプリケーションでMVCアプリの名前空間に関連するエラーが表示されます。あなたはMVCアプリケーションから受け継がれている設定を削除するには、あなたのWebAPIののweb.configファイルに<remove name="..." />または<clear />タグやinheritInChildApplications属性を使用する必要があり、この問題を解決するには

    。 web.configファイルの継承の詳細についてはhttps://stackoverflow.com/a/5968658/6387007

    をあなたもこのMSDNの記事をチェックアウトすることができます::https://msdn.microsoft.com/en-us/library/ms178685.aspx

    +0

    ありがとう。私はそれが物理的な構造ではなく、物理的な構造によって継承されていると確信していました。 – user2184057

    関連する問題