ASP.NETカスタムエラーページ、構成情報の分離、マルチ環境公開


今日は主に3つの内容を話して、すべてASPとです.NETに関する内容.
  • の最初のカスタムエラーは、Webサイトで404または500のエラーが発生し、ユーザーに友好的なインタフェースをどのように表示するかです.
  • の2つ目は分離プロファイルwebである.configは、構成情報が多ければwebに置く.cofigファイルは、ファイルがますます大きくなり、ますます長くなります.情報が多すぎて閲覧やメンテナンスが不便なので、独立したconfigに分けられるといいですね.
  • 第3は多環境について発表されたもので、多環境とは、開発環境、テスト環境、生産テスト環境、生産環境を指す.VSを利用して多環境のプロファイルの修正を容易にする.

  •  
    1.カスタムエラー
    ここでいうエラーは、httpのエラーを指すことが多い.例えば、404はアクセスリソースが見つからず、403は許可されず、500サーバはエラーである.
     
    1.1コードでユーザーを導く
     
     
    
      
      
      
      
    1. Response.Write("<h1>400</h1>"); 
    2.  
    3. Response.Redirect("404.html"); 

     
    2つの方法:
  • は、responseを用いるユーザに直接情報を提示するものである.writeで完成します.
  • は、ユーザを良いページにジャンプさせるように導くものである.

  •  
     
    1.2プロファイルの使用
     
    1.2.1 customerrors
     
    Webでcofigファイルには、カスタムエラーに関する構成セクションが用意されており、構成によりエラーの自動ジャンプが実現されます.
     
    
      
      
      
      
    1. <system.web> 
    2.  
    3.   <customErrors defaultRedirect="/views/shared/error.aspx" mode="Off"> 
    4.  
    5.     <error statusCode="404" redirect="/views/shared/404.aspx" /> 
    6.  
    7.   </customErrors> 
    8.  
    9. </system.web> 

     
    以上の構成で説明するように、404が現れると/views/shared/404にジャンプする.aspxページ、その他は/views/shared/error.にジャンプします.aspxページ.
    modeには3つの値がオプションです.
  • Off、カスタムエラーを閉じ、エラー情報を直接表示します.開発環境ではこのオプションを使用でき、エラーが発生しやすい.
  • Onは、ローカルアクセスでもリモートアクセスでもカスタムエラーを使用します.このオプションは、ユーザーがエラーメッセージを見るのは友好的ではなく、エラーメッセージにtrace stackがパッケージされている可能性があるため、システム内部の情報が漏れ、トラブルを引き起こす可能性があります.
  • RemoteOnly、リモートアクセスはカスタムエラーを使用し、ローカルアクセスは詳細を表示します.

  •  
    1.2.2 throw new HttpException(404, "Not Found");
     
    また、一部のビジネスでもカスタムエラーの構成情報を使用して、対応するエラーページを表示したい場合は、コードに対応する例外HttpExceptionを投げ出す必要があります.
     
     
    
      
      
      
      
    1. if(true
    2.  
    3.  
    4.   throw new HttpException(404, "Not Found"); 
    5.  

     
     
    Responseの設定を提案する人もいます.StatusCode=404.
    iis 6でstatuscodeを設定しても機能せず、ジャンプはしません.codeは404に変更されていますが、出力内容は変更されておらず、本物のhttp異常ではないので、自定ジャンプはありません.でもいい
    throw new HttpException(404, "Not Found")
    これでカスタムエラーを使用できます.
     
    iis 7の統合モードではstatuscode=404を設定し、自動ジャンプを実現することができる.
     
    もちろん、ビジネスでhttpcodeを使用すると、あまり適切ではないかもしれませんが、アプリケーションとhttpcodeの結合が強化され、見た目も快適ではありません.ビジネスのエラーメッセージに対しては、単独で設計し、単独で実現したほうがいいです.
    customErrorsの詳細については、次の2つの記事を参照してください.
    CustomErrors要素(ASP.NET設定アーキテクチャ)
    Webについてconfigのノードの説明
     
    2.プロファイルの分離
    分離後の注意点は、分離するプロファイルを修正することであり、iisは分離プロファイルの情報を再ロードせず、webのみを修正することである.configファイルは、分離されたプロファイルを含むすべてのプロファイルの情報を再ロードします.
     
     
    
      
      
      
      
    1. <appSettings configSource="appSettings.config"></appSettings> 

     
     
    
      
      
      
      
    1. <appSettings file="appSettings.config"></appSettings> 

     
    appSettings.config
     
    
      
      
      
      
    1. <?xml version="1.0" encoding="utf-8" ?> 
    2.  
    3. <appSettings> 
    4.  
    5.   <add key="title" value="debug "/> 
    6.  
    7. </appSettings> 

     
     
     
    上記の2つはいずれもプロファイルを分離し、appSettingsの構成を独立させることができます.file属性を持つノードは少ないが,configSource属性を持つノードが多い.
     
     
    3.環境プロファイルの発行
    プロジェクトには一般的に3つの環境があります:開発、テスト、生産.
    プロジェクトが大きくなるにつれて、ますます複雑になり、プリリリース環境、自動化テスト環境、手動テスト環境、生産環境1、生産環境2など、より多くの環境がある可能性があります.
    とにかく、環境が多いです.
    各環境の構成情報は異なります.たとえば、データベース接続が異なり、データ関連の構成が異なり、環境固有のカスタム構成もあります.
    しかし、いくつかは同じです.
    簡単なcopyで多くのプロファイルを作成するだけでは、疲れます.たとえば、変更が必要な構成がありますが、この構成は環境ごとに同じであれば、繰り返し作業が多くなります.
     
    実はVSツールは私达に1つの便利な多环境の配置の管理を提供して、私达は配置に従って使うだけでいいです.
    実用vsはwebアプリケーションプロジェクトを確立した後、web.configファイルの下には、webが同時に存在する.debug.config,web.release.config、これがデフォルトで提供されるデバッグとパブリッシュの2つの環境構成です.
    さらに作成することもできます.ツールバーには、debugとreleaseを引き出すドロップダウンボックスがあります.ドロップダウン・アイテムには構成マネージャがあります.開いたら、左側のドロップダウン・ボックスで「新規」を選択し、新しい構成を作成できます.
    その後、ドロップダウン・ボックスに新しいプロファイルが1つ追加されましたが、まだ複数のプロファイルがありません.プロファイルは手動で追加する必要があります.web.configファイルを右クリックし、メニューから「構成変換を追加」を選択すると、複数のファイルが作成されます.Testing.config.
     
    WebでTesting.configファイルにはすでに2つの例があり、素早く手に入れることができます.
     
    属性を設定します.
     
    
      
      
      
      
    1. <!-- 
    2.  
    3.      ,“SetAttributes”   
    4.  
    5.     “connectionString” , “Match”   
    6.  
    7.      “MyDB” “name” “ReleaseSQLServer”。 
    8.  
    9.      
    10.  
    11.     <connectionStrings> 
    12.  
    13.       <add name="MyDB"  
    14.  
    15.         connectionString="Data Source=ReleaseSQLServer;Initial Catalog=MyReleaseDB;Integrated Security=True"  
    16.  
    17.         xdt:Transform="SetAttributes" xdt:Locator="Match(name)"/> 
    18.  
    19.     </connectionStrings> 
    20.  
    21.   --> 

     
     
    アトリビュートを除去します.
     
    
      
      
      
      
    1. <compilation xdt:Transform="RemoveAttributes(debug)" /> 

     
    ノードを置き換えます.
       
    
      
      
      
      
    1. <!-- 
    2.  
    3.        
    4.  
    5.        ,“Replace”   
    6.  
    7.       web.config   <customErrors>  。 
    8.  
    9.        ,   
    10.  
    11.         <system.web>   customErrors  , “xdt:Locator” 。 
    12.  
    13.        
    14.  
    15.       <customErrors defaultRedirect="GenericError.htm" 
    16.  
    17.         mode="RemoteOnly" xdt:Transform="Replace"> 
    18.  
    19.         <error statusCode="500" redirect="InternalError.htm"/> 
    20.  
    21.       </customErrors> 
    22.  
    23.     --> 

     
     
    より詳細な使用については、以下の2つの文章を参考にすることができます.
     
    Web.config Transformation Syntax for Web Application Project Deployment Using Visual Studio
    Web Deployment: Web.Config Transformation
     
     
    プロジェクトソース
    git://github.com/woaigithub/asp.net-customerrors-seperate-config-multiple-web.config.git