0

私はaspページとasp.netページの両方を一緒に使用しています。ローカルのiis(v5.1)でアプリケーションをホストしたかったのですが、後でiisexpressが私のニーズに合っていることを学びました。しかし、iis5.1とiisexpressのどちらを使用するかに関係なく、問題があるようです。

私が使用しているaspページは、別の仮想ディレクトリにある静的リソース(css、javascriptなど)を参照しています。たとえば、cssファイルのインクルードは次のようになります。

<link rel="stylesheet" href="/common/include/style/css.css"/>

そのようなものがテスト環境から実行されることになっている場合、上記のURLは次のように解決されます。

http://testing/common/include/style/css.css

これは、私のメインアプリケーションが存在する場所とは対照的です。これは次のようになります。

http://testing/myapp/default.aspx

ここで、たとえばポート8082でiisexpressを実行し、次のようなインバウンド要求がある場合:

http://localhost:8082/common/inlcude/style/css.css

404エラーが発生します。issまたはiisexpressにそのようなURL(で始まる/common/...)を解決するように指示することは可能ですか?http://testing/common/...

更新(2011年5月31日、午後7時4分IST):

URL書き換えとは何かについて調査を行ってきましたが、例からいくつかのことを理解するようになりました。私が欲しいのはURLの書き直しそのものかどうかはわかりません。再びiisexpressの例えをとると、次のようなインバウンド要求uriがあることを私は知っています。

http://localhost:8082/common/inlcude/style/css.css

しかし、私はこれが実際に次のuriによって提供されることを望んでいます:

http://testing/common/include/style/css.css

以前のURIは、iisexpressを使用して仮想化したフォルダーには存在しません。

ここでURLを書き直す必要がありますか?

さらに、ASPには、次のような行が含まれています。

<!-- #include virtual="/common/include/classes/utils.asp" -->

これらのことでさえ、対応する対応するものに解決されることになっていますhttp://testing/...

ps:私はこれをすべてやっていますiis 5.1

4

1 に答える 1

0

ASP.NET 2.0 以降では、チルダ演算子 ( ~) を使用して、アプリケーションのルートを指定できます。例えば:

<link href="~/Styles/Site.css" rel="stylesheet" type="text/css" />

相対 URL を生成します。

<link href="Styles/Site.css" rel="stylesheet" type="text/css" />

これは、ASP.NET ページでは問題なく機能します。

従来の ASP と静的 HTML ページは別の話であり、次のメカニズムの 1 つ以上を使用する必要があります。

  1. すべてを相対的にします。サイトのルートにページまたは ASP スクリプトがある場合は、指定する代わりに指定し/common/include/...ますcommon/include/...。サブフォルダーにページまたは ASP スクリプトがある場合は、CSS を../common/include/...、つまり親パスを介して参照します。フォルダー構造が深くなるほど、../親パスが増えるため、これらの相対パスの管理が面倒になる可能性があります。また、最近では一般的ではありませんが、一部の共有ホスト サーバーは親パスを許可しません。

  2. パスプレフィックスを含む変数で CSS パスをプレフィックスします。例えば:

    <link rel="stylesheet" href="<%=Session("RootPath")%>/common/include/style/css.css"/>
    

    本番環境では、セッション値RootPathをグローバルに に設定します/MyAppが、テストでは空の文字列のままにします。でこれを行うことができSession_OnStartますglobal.asa。代わりに、アプリケーション全体の値を使用することもできますApplication("RootPath")。これは、ASP ページに対してのみ機能します。

  3. URL 書き換え - 静的な HTML ページがある場合は、URL 書き換えが役に立ちます。開発用 PC で動作する絶対 URL を、運用サーバーで使用されるパスに書き換えます。したがって、基本的に a を見るたびに、href="/common/...に書き換えますhref="/myapp/common/...。IIS6 はそのままでは書き換えをサポートしていません。Iconics IRFHeliconTech の ISAPI_Rewrite3などのサード パーティ製ツールが必要です。IIS 7.x は、URLRewrite Module 2.0による URL 書き換えをサポートしています。

于 2011-05-31T12:41:07.257 に答える