2016-08-15 4 views
0

QAチームは、プライマリDNSサーバーに到達できないシステムでWebサーバー(組み込み装置UIを提供する)を実行すると、各操作で約16秒かかっているように見えます。DNSサーバーに到達できないときにWeb要求が非常に遅くなる

まず、静的ページを提供してもこの問題は発生しないと考えました。

私の最初の容疑者を除外 - ロギング - 私はIntelligencia.UrlRewriter(ナゲットパッケージver。2.0.0.9)の原因を最終的に突き止めました。各リクエストで、リライタは "REMOTE_HOST"を含むすべてのサーバ変数のコピーを作成するように見えます。これは動的変数であり、必要なときにのみ実行されます。これにはHttpRequest.UserHostNameへの呼び出しが含まれます。

質問は簡単です:UrlRewriterを使用するWebアプリケーションで逆アドレス検索を回避するにはどうすればいいですか?

私は自分自身で大きなハンマーの答えを提供しますが、他のオプションを聞きたいと思います。

答えて

0

私は、単純なHTTPモジュールと別のクラスライブラリプロジェクトを追加しました:

public sealed class NoRemoteHostLookup : IHttpModule 
{ 
    public void Dispose() 
    { 
    } 

    public void Init(HttpApplication context) 
    { 
     context.BeginRequest += ContextOnBeginRequest; 
    } 

    private void ContextOnBeginRequest(object sender, EventArgs eventArgs) 
    { 
     var request = HttpContext.Current?.Request; 

     if (request != null) 
      request.ServerVariables["REMOTE_HOST"] = request.ServerVariables["REMOTE_ADDR"]; 
    } 
} 

これは、その後、Webアプリケーションプロジェクトで参照されると前にweb.configファイルにURLリライタを設定されています。

<system.web> 
    <httpModules> 
     <add type="NoRemoteHostLookupModule.NoRemoteHostLookup, NoRemoteHostLookupModule" name="NoRemoteHostLookup" /> 
     <add type="Intelligencia.UrlRewriter.RewriterHttpModule, Intelligencia.UrlRewriter" name="UrlRewriter" /> 
    </httpModules> 
</system.web> 
  • "REMOTE_HOST"変数が設定されると、フレームワークはUrlRewriterによってアクセスされたときに後で解決することを控えます。
  • これは理論です。私のVisual Studioのデバッグセッションでは動作しますが、System.NotSupportedExceptionを取得するモノターゲットフレームワークでは動作しません。
  • 私はhttps://github.com/sethyates/urlrewriter/issues/9
  • 一方、私はnginxの設定に書き換えルールを移して、生産にURLリライタを剥ぎ取らバグレポートを作りました。
関連する問題