2017-08-16 18 views
3

私はC#アプリケーションを開発しています。私がIISの下にいるかどうかを調べる必要があります。私は、HostingEnvironment.IsHostedメソッドを使用することについてのSOに関するいくつかの質問を見てきました。私が何か書く場合は残念ながら:HostingEnvironmentにIsHostedの定義が含まれていません

if (HostingEnvironment.IsHosted) 
{ 
    // on IIS 
} 
else 
{ 
    // not on IIS 
} 

を私はコンパイルエラーを取得:

HostingEnvironment does not contain a definition for IsHosted

私が使用している:System.Web.Hosting.HostingEnvironment.IsHostedを使用してみました Microsoft.AspNetCore.Hosting; Microsoft.AspNetCore.Hosting.Internal;

EDIT

を提案されているようにあなたは何を意味

enter image description here

+3

フレームワークのバージョンを混合しています。 System.Webはasp.net-core – Nkosi

+0

でもう使用されていません。代わりに何を使用できますか? –

+0

ドキュメントを確認するhttps://docs.microsoft.com/en-us/aspnet/core/fundamentals/hosting?tabs=aspnetcore1x – Nkosi

答えて

4

これは役に立ちます。あなたは、このようなIHostingEnvironmentを取得できます。

var hostingEnvironment =(IHostingEnvironment)options.ApplicationServices.GetService(typeof(IHostingEnvironment)) 

if(hostingEnvironment.IsProduction()) 
{ 
    // do work 
} 

環境があなたのlaunchSettings.jsonに設定されています。起動プロファイルの下で:

"IIS Express": { 
    "commandName": "IISExpress", 
    "launchBrowser": true, 
    "launchUrl": "/api/values", 
    "environmentVariables": { 
    "ASPNETCORE_ENVIRONMENT": "Development" 
    } 
}, 

デプロイ時のデフォルト値は "Production"です。

編集:私は実際に部分を欠いています。コードを封筒に入れる必要があります.UseKestrel(options => { /* environment code */ })

+0

ありがとうございますが、私はあなたにあまり追いかけません。xのコードをエンベロープにするのはどういう意味ですか? –

+0

あなたの '新しいWebHostBuilder()の中に投稿した' var hostingEnvironment = .... 'を置きます。UseKestrel(オプション=> {/ *ここに* /}を置く);' –

+0

あなたの質問からifブロックを使うことができます –

関連する問題