2009-03-28 21 views
69

aspアプリケーションがローカルで実行されているかどうかを判断する推奨方法があるかどうかを知りたいと思います。現時点では、私はRequestオブジェクトを使用し、サーバー変数上でlocalhostまたは127.0.0.1の文字列検索を行いますが、これにはいくつかの制限があります。リクエストオブジェクトが必要なときにいつも利用できるとは限りません。ASP.NETアプリケーションがローカルで実行されているかどうかを確認します。

答えて

136

を確認することができますか?

HttpContextとそのプロパティRequest/Responseは、サーバーがページの処理を開始するとすぐに初期化されます。ですから、あなたのページのライフサイクルでc#コードを実行すれば、リクエストURLを確認できるはずです。

+3

何リクエストがnullの場所について。すなわちApplication_start? – mmtemporary

+0

@ Application中に_mmtemporary要求がない場合は、Request.IsLocalかどうかを確認する必要はありません。 Global.asaxで使用する場合は、Application_BeginRequest内で使用することを検討してください。 –

+1

@ViniciusRochaいくつかのシナリオでは、Requestがnullの場合にチェックします。 – mmtemporary

0

要求がASP.NET環境で常に利用可能ではありませんを参照してくださいRequest.IsLocalプロパティ

+0

私は、HttpContextクラスを使用してRequestオブジェクトにアクセスできることに気付きませんでした。 – Sean

+0

好奇心で、Requestオブジェクトにアクセスする他の方法はありますか?ありがとう:) –

+0

System.Web.UI.Page.Request – Sean

1

Request.IsLocalは、127.0.0.1または:: 1をチェックするのと同じです。このポストを参照してください:http://forums.asp.net/p/1065813/4081335.aspx

+2

はい、標準ライブラリ呼び出しを使用すると、コードの意図がよりよくわかります。私はこのような単純なことをするために私自身のコードを書くのではなく、ライブラリを使う方が好きです。 – Sean

+0

私は同意します。私は、指定された答えがポスターが使っていたものと同じコードなので、答えに同じ制限があるかもしれないことを指摘したいと思います。 – ZLA

+1

リンクが正しくありません。私のIPアドレスを介してサーバーをローカルにヒットした場合、HttpContext.Current.Request.IsLocalは正しくtrueを返しますが、UserHostAddressは実際のIPアドレスであり、127.0.0.1(または:: 1)ではありません。 .NET 4. – mhenry1384

0

HttpContext.CurrentはApp_StartまたはHttpContext.Current前に、たとえば、そうでない場合

HttpContext.Current.Request.IsLocal 

nullで使用されていない場合使用可能です、あなたは上の

HostingEnvironment.ApplicationPhysicalPath.StartsWith(@"C:\") 

または専用のディスクをテストすることができますPC。

別の方法として、生産時に設定された定数コンパイル変数を使用することができます。たとえば、Azureとvisualstudio.comを使用する場合などです。

汚れていますが動作します。

1

これはIsDevelopmentEnvironmentが設定されている方法についての詳細を知るためにはのApplication_Start

if (!HostingEnvironment.IsDevelopmentEnvironment) 
{ 
     GlobalFilters.Filters.Add(new RequireHttpsAttribute()); 
} 

で私のために働いて、次のスレッドをご覧ください。

クラスの背後にあるMVCのビュー/ ASPページ/コードで

In ASP.NET, what determines the value of HostingEnvironment.IsDevelopmentEnvironment?

1

:MVCコントローラで

bool isLocal = HttpContext.Current.Request.IsLocal; 

bool isLocal = Request.IsLocal; 
関連する問題