2016-06-17 10 views
0

静的ファイルを提供するためにMicrosoft.Owin.StaticFilesミドルウェアで自己ホスト型Web APIサーバーを使用しています。構成:コントローラ内のOwinミドルウェア構成

public void Configuration(IAppBuilder appBuilder) 
{ 
    // Configure Web API for self-host. 
    var config = new HttpConfiguration(); 
    //... 
    appBuilder.UseWebApi(config); 

    var physicalFileSystem = new PhysicalFileSystem(@".\Public"); 
    Directory.CreateDirectory(physicalFileSystem.Root); 
    var options = new FileServerOptions 
    { 
     FileSystem = physicalFileSystem,   
     RequestPath = PathString.FromUriComponent("/download") 

    }; 
    appBuilder.UseFileServer(options); 
} 

WebAPIコントローラのFileSystem設定(またはファイルが提供されている場所からのパス)を取得する方法はありますか。

+1

設定をどこかに保存してOWinの設定で使用するのはなぜですか?とにかくこれらの "魔法の"文字列をあなたのコードに持つべきではありません。 – DavidG

+0

できません。それがOWinのPOINTです。 Static Fileミドルウェアは、WebAPIコントローラとは独立しています。代わりに、WebAPIに静的ファイルをホストさせることができます。ワイルドカードパスを持つStaticFileControllerのルートを設定してから、コントローラ内のパスを解析して、返すFileStreamオブジェクトを作成します。 – Aron

答えて

1

私はよくあなたの問題を理解していないが、あなたは別のミドルウェアから任意のものを渡したい場合は、辞書で、環境オブジェクトにそれを置くことができます:あなたが渡したいのであれば

IDictionary<string,object> 

ミドルウェアから別のオブジェクトには、環境オブジェクトが使用されます。

関連する問題