2011-10-27 4 views
2

Visual StudioまたはIISでASP.NET WebアプリケーションがCassini Webサーバーで実行されているかどうかを実際に確認できますか?コード内から使用されているWebサーバーを確認する

背景や理由が尋ねるために:

を我々のアプリのかなりの数では、マシン名を確認することにより、またはクライアントのIPがあるかどうかをチェックすることにより、ログインページでは、通常のログイン設定をバイパスlocalhost。 (127.0.0.1または::: 1)を使用して、開発PC上でデバッグしながらアプリケーションの動作をテストし、異なる方法で動作させることができます。

マシン名のアプローチは問題ありませんが、新しいDev PCを入手する際にコードを変更する必要があります。私はこれがあまり頻繁ではないことを理解していますが、それはちょっと感じます。また、いくつかの開発者がそれに取り組んでいるので、すべてのマシンを "if"ステートメントにリストアップする必要があります。

"localhost"アプローチについては、私はそれが好きではありません。別の攻撃面を追加しているようだ。私は、誰かがWebサーバーの1つに乗って、ローカルで実行して、物事を見ることについて心配しています。

私は、WebサイトがVisual StudioからCassini Webサーバーで実行されていることをコードから検出する方法があるのだろうかと思います。

+0

[ASP.NETスタジオがVisual Studioを介して "通常"または "デバッグ"中で実行されているかどうかをどのように識別できますか?](http://stackoverflow.com/questions/713626/how-can- i-identify-as-asp-net-site-is-being-running-normally-or-in-debug) – codingbadger

+0

これは異なっています - デバッグモードで実行されているかどうかを確認する方法を尋ねています。私はリリースモードでVisual Studioに簡単に入ることができます。 – David

+0

ああ大変申し訳ありません。私は[HttpRequest.IsLocal](http://msdn.microsoft.com/en-us/library/system.web.httprequest.islocal.aspx)を使用したくないと思いますか? – codingbadger

答えて

2

IISで実行している場合、ServerVariablesコレクションのSERVER_SOFTWAREプロパティはMicrosoft-IIS/7.5のようなレポートを返します。

残念ながら、これは、カッシーニの下で実行すると空白に見えます。

セキュリティを心配している場合は、これが目的の動作に逆向きに見えるので、これが役立つかどうかわかりません。

チェックSystem.Diagnostics.Process.GetCurrentProcess()この場合

string processName= System.Diagnostics.Process.GetCurrentProcess().ProcessName; 
if (processName == "WebDev.WebServer40") 
{ 
    // testing 
    // Insert code that you want to happen if this is running in Visual Studio 
} 

ProcessNameのは、カッシーニのために、それは "WebDev.WebServer40" だとIISのために、それはだ "W3WP":コメントから

IISで実行されている場合、pName変数は "w3wp"になります。 Visual Studio .NET 4.0アプリケーションでは、 "WebDev.WebServer40"です。 (私はチェックしていませんが、ASP.NET 2.0用のWebDev.WebServer20と仮定します)

+0

あまりセキュリティはありません。私たちは本当に機密情報のあるものにはこれを使用しません。これが最悪の場合、店長は地区指導者向けの情報を見ることになります。財務はなく、業績/人事はありません。これは、他のシステム(OpenIdに似ています)から渡されたuserIDを使用する内部サイト上にあり、特定のユーザーの下でWebサイトがどのように見えるかを見るために、バイパスします。これは実際には完璧です。やってみます。 – David

+0

ダーン。うまくいきませんでした。私はIISがこれを放送しないように設定しているからだと思います。とにかくありがとう! – David

+1

見つけました!あなたの答えは私を正しい道に導くのに十分に近いものでした。 System.Diagnostics.Process.GetCurrentProcess()。ProcessNameを確認しました。カッシーニの場合は「WebDev.WebServer40」、IISの場合は「w3wp」です。あなたのアンサーは私が探していたものではありませんでしたが、もしあなたがあなたのものを変更したいのであれば、私はそれを受け入れて、それを理解しようとする次の人がそれを見つけることができるようにします。 – David

0

ビルドシンボルを使用できませんか?ビルドシンボルを設定し、#PRODを実行して認証を実行します。したがって、デバッグモードに入ると、認証が完全にスキップされます。希望が助けてくれる!

関連する問題