「ASP.NETコアパフォーマンスシリーズ」静的ファイルのミドルウェア

I.概要

  (例えばHTML、CSS、画像やJavaScriptファイルなど)の静的ファイルが直接ロードクライアントのファイルへの直接Webアプリケーションです。その他のプログラムの動的相互作用の観点からコードを超えるよりも、実際には、原則は、(HTTPプロトコルを行く)と同じです

ASP.NETコアでは、これらの文書を提供するために、いくつかの設定が必要です。

二、wwwrootの

  静的ファイルはwwwrootディレクトリの下/ Webプログラムアイテム{ContentRoot}に格納されているが、UseWebRootパス方法によって変更することができます。 

Webアプリケーションプロジェクトのwwwrootフォルダは、デフォルトでは複数のフォルダがあります。

  • wwwrootに
    • CSS
    • 画像
    • JS

HTTPでサブフォルダのフォルダへのアクセス画像のURIフォーマット:// <SERVER_ADDRESS> /画像  / <イメージ_ファイルの_名前>。たとえば、  HTTP:// localhostを:1189 / RFロイヤリティーフリー/ banner.png

  以下のコードによってオープンアクセス静的ファイル(集合{ContentRoot} /デフォルトの作業ディレクトリとしてwwwrootの静的ファイル)

公共ボイド設定(IApplicationBuilderアプリ)
{ 
    app.UseStaticFiles()。
}

第三には、静的ファイルの作業ディレクトリとして指定されたディレクトリを設定します

公共 ボイド設定(IApplicationBuilderアプリ)
{ 
    app.UseStaticFiles()。//    wwwrootの目录

    app.UseStaticFiles(新しいStaticFileOptions 
    { 
        FileProvider = 新しいPhysicalFileProvider(
            Path.Combine(Directory.GetCurrentDirectory()、" the_path_to_yours " ))、
        RequestPath = " / GiveAName " 
    })。
}

  なお、アクセスカスタムの静的ファイルパスの変更:HTTP:// localhostを:1189 / GiveAName /images/banner.png

第四に、クライアントキャッシュの静的なファイルを追加します

公共の 無効設定(IApplicationBuilderアプリ、IHostingEnvironment ENV)
{ 
    VAR cachePeriod = ENV。プロダクション()?" 60000 "" 600 " ; 
    app.UseStaticFiles(新しいStaticFileOptions 
    { 
        OnPrepareResponse = CTX => 
        { 
            // 记得下面的引用:
             // Microsoft.AspNetCore.Httpを使用して、 
            ctx.Context.Response.Headers.Append(" のCache-Control "、$ " 公共の、最大-age = {cachePeriod} " )。 
        } 
    })。
}

  上記のように、本番環境では、我々は60000(ミリ秒)を追加する静的ファイルを与えるキャッシュ、すなわち:クライアントはブラウザのローカルな注意からこの方法でファイルを取ると1分間に、直接、時間の静的ファイルを更新してもいませんでした最新のファイルへ。

 

 

PhysicalFile静的なファイルアクセスの使用を作る5つの方法は、認証することができます

  静的にはミドルウェアがアクセスするブラウザ(wwwrootの下のファイルを含む)ミドルウェアの静的ファイルが提供するすべての静的ドキュメント、我々は実用的なアプリケーションシナリオを想定し、我々は、指定したディレクトリにファイルをアップロードし、このファイルだけのパーティを可能にするファイルあなたは権威がそれを確認するために、どのようにして、アクセスすることができますか?

[承認] // 認証
パブリックIActionResult UsersOwnPictrue()
{ 
    VARのファイル= Path.Combine(Directory.GetCurrentDirectory()、 
                             " StaticFilesPath "" 写真"" my.svgを" );
     戻り PhysicalFile(ファイル、画像/ SVG XML + " ); //戻り静的ファイルを
}

六、使用して別々の前端と後端開発

  開発モデルはなく、工事がASP.NETコアミドルウェア静的ファイル、独自のを開始していない、これは単に開発することができるだけでなく、バ​​ックエンドのデータの前にいることを、すべてのフロントエンドは独自のフロントエンドを担当するインターワーキング、独立したフロントとリアエンドを開発しました

プロジェクトのフロントエンドのデフォルトページを設定する方法、プロジェクトのスタートページを設定する方法:ここでは、もう少し問題に関心万語を省略モード収束、

公共の 無効設定(IApplicationBuilder APP)
{ //; app.UseDefaultFilesは()しなければならない   前に呼び出されます  。  実際にはURLを書き換えるために、文書を提供していません。
    app.UseStaticFiles(); //これらの二つのステップ 
}
   UseStaticFilesUseDefaultFilesUseDefaultFiles
:使用UseDefaultFilesは、プロジェクトのデフォルトのスタートページとしてこれらの文書を使用する
 デフォルトの.htm
 デフォルト.htmlを
index.htmを
index.htmlを
公共の 無効設定(IApplicationBuilder APP)
{ 
    // デフォルトの静的ページファイルとして別のファイルを使用し 
    DefaultFilesOptionsオプション= 新しい新DefaultFilesOptions(); 
    ; options.DefaultFileNames.Clear()
    (options.DefaultFileNames.Add " 他の.html wwwrootの下に" ); 
    app.UseDefaultFiles(オプション); 
    app.UseStaticFiles(); 
}

 

app.UseFileServer(); //は、さらに、上記の二つのステップのいずれかであることができます

 

7、UseFileServerに

  UseFileServer統合UseStaticFiles、UseDefaultFilesとUseDirectoryBrowser(オプションが有効になっていると必要性のservices.AddDirectoryBrowser())機能、

公共 ボイド設定(IApplicationBuilder APP)
{ 
   
    app.UseFileServer(新しいFileServerOptions 
    { 
        FileProvider = 新しいPhysicalFileProvider(
            Path.Combine(Directory.GetCurrentDirectory()、" 文件夹" ))、
        RequestPath = " /请求名" 
        EnableDirectoryBrowsing = 
    }) ; 
}
接続を要求します 対応するパス
http:// <SERVER_ADDRESS> /リクエスト名/images/file1.png フォルダ/images/file1.png
http:// <SERVER_ADDRESS> /要求名/ フォルダ/default.html

八、ディレクトリの参照を開きます

  この機能は、それがより危険である、通常は開いていない、ディレクトリを表示して、Webアプリケーションのユーザーが指定したディレクトリ内のファイルやディレクトリのリストを表示することができます。 セキュリティ上の理由から、呼び出し  Startup.Configure ディレクトリブラウジングを可能にするためにUseDirectoryBrowser方法を:

公共 のボイドConfigureServices(IServiceCollectionサービス)
{ 
    services.AddDirectoryBrowser(); 
}
app.UseDirectoryBrowser(新しい新しいwwwrootに/画像ファイルの閲覧機能にDirectoryBrowserOptions //ターン
    { 
        FileProvider = 新新PhysicalFileProvider(
            Path.Combine(Directory.GetCurrentDirectory()、" wwwrootに"" ロイヤリティーフリー" ))、
        RequestPath = " / MyImages " 
    })。

九、指定されたファイルの種類のMIMEタイプを指定します

公共の 無効設定(IApplicationBuilder APP)
{ 

    VARのプロバイダ= 新新FileExtensionContentTypeProvider(); 

    provider.Mappings [ " の.rtf " ] = " ファイルアプリケーション/ X-msdownload " ;
     // 構文解析し、指定したファイル削除 
    (provider.Mappings.Removeを。 MP4 " ); 
    ...... 
}
公共の 無効設定(IApplicationBuilderアプリ)
{ 
    app.UseStaticFiles(新しいStaticFileOptions 
    { 
       // 未知类型的ContentTypeを 
        ServeUnknownFileTypes = 
        DefaultContentType = " バラ/あなたのタイプ" 
    }); 
}

 

おすすめ

転載: www.cnblogs.com/humble/p/12288903.html