2

ドメイン名に基づいてクライアントに合わせてブランド化されたマルチテナント Web サイトをホストします。Web サイトは、Asp.net MVC4 を使用して開発されています。

app_offline.htm ファイルを使用して、メンテナンス期間中に Web サイトをオフラインにする予定です。ただし、ドメインに基づいてメンテナンス ページをブランド化する必要があります。これを実現するために、UrlRewrite モジュールを使用することにしました。

書き換えルールのロジックは、要求が特定のドメインからのもので、app_offline.htm ファイルが Web サイトに存在する場合、そのドメイン固有の (ブランド化された) app_offline ページにリダイレクトするというものです。web.config のルールは次のとおりです。

   <!-- App_Offline redirects -->
  <rewrite>
  <rules>
    <rule name="Domain1 App_offline redirects" stopProcessing="true">
      <match url="^(.)*" />
      <conditions logicalGrouping="MatchAll">
        <add input="{HTTP_HOST}" pattern="^domain1" />
        <add input="{DOCUMENT_ROOT}/app_offline.htm" matchType="IsFile" />
        <add input="{REQUEST_URI}" pattern="domain1.app_offline.htm" negate="true" />
      </conditions>
      <action type="Redirect" url="https://{SERVER_NAME}/domain1.app_offline.htm" />
    </rule>
    <rule name="Domain2 App_offline redirects" stopProcessing="true">
      <match url="^(.)*" />
      <conditions logicalGrouping="MatchAll">
        <add input="{HTTP_HOST}" pattern="^domain2" />
        <add input="{DOCUMENT_ROOT}/app_offline.htm" matchType="IsFile" />
        <add input="{REQUEST_URI}" pattern="domain2.app_offline.htm" negate="true" />
      </conditions>
      <action type="Redirect" url="https://{SERVER_NAME}/domain2.app_offline.htm" />
    </rule>
  </rules>
</rewrite>

現在直面している問題は、この URL 書き換えルールが開始され、ユーザーをブランド化されたオフライン ページにリダイレクトするにもかかわらず、最初にブランド化されていない app_offline.htm ページのコンテンツが表示されることです。数秒後にページを更新すると、実際のブランド コンテンツが表示されます。

また、汎用の app_offline.htm コンテンツが表示されるときの HTTP 応答は 503 であるのに対し、ブランド化された app_offline.htm が後で表示されるときの HTTP ステータスは 200 であることにも気付きました。

一般的な app_offline.htm コンテンツの初期表示を克服する方法はありますか?

上記の URL 書き換えアプローチでパフォーマンスの問題は見られますか?

前もって感謝します。

編集: ドメイン固有の app_offline ページを更新すると、ブラウザーにキャッシュされ、そこからコンテンツが表示されることに気付きました。ブランド化された app_offline ページを更新せずに、サイト上の他のページにアクセスしようとすると、常に一般的な app_offline.htm コンテンツが表示されます:)

4

1 に答える 1

1

この問題の解決策を見つけました。

  1. 「オフライン」という名前の新しいフォルダーを作成しました
  2. ドメイン固有の app_offline.htm ページをこのオフライン フォルダーに移動しました。
  3. IIS で「オフライン」フォルダをアプリケーションとして設定します。

IIS Express と IIS の両方で完全に動作します

于 2013-08-22T18:59:51.707 に答える