0

私は ASP.Net MVC を使用しています。バンドルは次のようになります。

        bundles.Add(new Bundle("~/bundles/rgmpjsbundle").Include(
            "~/Scripts/jquery-{version}.js",
            "~/Scripts/jquery-ui-{version}.js",
            "~/Scripts/jquery.unobtrusive*",
            "~/Scripts/jquery.validate*",
            "~/Scripts/modernizr-*",
            "~/Scripts/jquery.address-1.5.js",
            "~/Scripts/tabmenu.js",
            "~/Scripts/knockout-2.2.0.js",
            "~/Scripts/knockout.mapping-latest.js",
            "~/Scripts/jquery-ui-1.10.3.custom.js",
            "~/Scripts/KnockoutCustomBindings.js",
            "~/Scripts/knockout-sortable*",
            "~/Scripts/moment.js"));

これはかなり標準的です。問題は、開発リージョンでアプリケーションをデプロイするときに発生します。IIS は次のように設定されています (あまり良くないことはわかっています)。

DEVWEBSITE
   ->  app 1
   ->  app 2
   ->  app 3
UATWEBSITE
   ->  app 1
   ->  app 2
   ->  app 3

でも; 各アプリケーションには独自の Web サイトがあるという点で、本番環境のセットアップは異なります。DEV/UAT 構造の下では、私のアプリケーションは ~ を使用して DEV/UAT Web サイト (シェル サイト) にジャンプしますが、PROD 環境では、に戻ります。 Web アプリケーションのルート。MVC URL 書き換えを使用している場合を除いて、相対参照を使用します。

誰でもこの問題の解決策を持っていますか? ~ 参照をキャッチするための IIS7 の設定でしょうか。

4

1 に答える 1

0

@html.getMyPath() のようなヘルパーと、環境 (dev、UAT プロダクション) のさまざまな構成を使用して Web 構成にキーを作成することを試みることができます。キーには、key="pathToFolder" value="/" または " ~/" を実行し、その構成をアプリの開始時にキャッシュに読み込みます。

ヘルパーはパラメーターを読み取り、ファイルのパスへの解決策を見つけます。

他の解決策は、環境ごとに異なる「ルートの場所」を設定し、server.mappath を使用して各環境のファイルの物理的な場所を決定できることです。この実装は、html ヘルパー内にもある必要があります。

それが役立つことを願っています

于 2013-08-14T20:25:16.567 に答える