2010-12-14 17 views
14

IIS7内でASP.NETが信頼性が高く正しい方法で有効になっているかどうかを確認することが課題です。IIS 7でASP.NETが有効になっているかどうかを検出する方法

Server Manager -> 
    Roles -> 
     Web Server (IIS) -> 
      Remove Role Services -> 
       Remove ASP.NET 

applicationHost.configファイル内になければならないこれを決定するための自然な場所を:

を有効/無効にするには、に行くことによって、この場合に行われます。しかし、ASP.NETを有効または無効にすると、 "ManagedEngine"モジュールが使用可能になり、タグにisapiフィルタレコードが残っています。

現時点で最も適切なのは、<isapiCgiRestriction>タグにaspnet_isapi.dllが含まれているか、ASPNETトレースプロバイダーが利用可能かどうかを確認することです。

ただし、これらはASP.NET設定の存在を直接検出するものではなく、ユーザーによって再構成される可能性がある副作用です。

ロールを列挙しても、可能であればOSの設定ではなく、IISの設定/設定を調べることでこれを行うことをお勧めします。&サーバー上のサービスは、このテクニックが常にIIS7使用されている。応答のための

更新

感謝。私がやりたいことを明確にするために、サーバーの構成のさまざまな場所から単一の(読み取り専用の)ビューに設定を引き出し、ユーザーがソフトウェアを動作させるために構成する必要があることを示します。私は持参する必要がある設定の

一つは、このいずれかになります。 IIS Config showing ASP.NET not installed

1は赤で強調表示しました。

私は設定を操作する必要はありません、それを再現するだけです。この例のように、IISの役割をサーバーに追加したときにユーザーがASP.NETボックスをチェックしたかどうかを確認したいと思います。

これは、私が必要としないチェックにプラットフォーム固有の依存関係を追加したくないため、役割サービスを列挙するのではなく、IISで信頼できるものを調べることで行います。 Roles/Servicesインフラストラクチャを持たないサーバーにIIS7をインストールすることが可能かどうかはわかりませんが、優先的には心配したくありません。私はまた、すでにIISの周りをスクラブするためのライブラリの負荷があります。

しかし、ロール/サービスを列挙する方法を見つけるのも難しいので、それを含む解決策があれば、それは確かに有用であり、 ASPNETトレースプロバイダーが横たわっています。

残念ながら、ASP.NETボタンをチェックしないと、IIS applicationHost.configファイルでManagedEngineモジュールを取得できます。信頼できるチェックではありません。また、ASP.NETをisapiフィルタとしてマップすることもできます。そのため、チェックするだけでは不十分です。これらのことは、ASP.NETがインストールされているが削除されている場合に特に問題になります。

ロールサービスを調べるのが最善のソリューションだと思われます。しかし、これに関するAPI情報は非常に稀有なので、援助のために泣いています。

+0

これはconsole/windowsフォームアプリですか、それともIISアプリ自体ですか?あなたは特定のサイトを意味するのですか、それとも一般的には意味しますか? – Kev

+0

検出はwinformsアプリケーションからのものです。 –

+0

検出は一般的に行う必要があります。基本的には、ASP.NETロールサービスが削除された場合、それはサーバー全体の設定であり、その状態を検出する信頼できる方法です。 –

答えて

14

彼らはそれをチェックするかどうかを知るための絶対的な方法は、以下のレジストリキーを検索することです:

HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\InetStp\Components 

そこでは、あなたが2 1に設定された値、ASPNETNetFxEnvironmentNetFxExtensibilityが表示されるはずです。このレジストリキーは、IISで有効になっているすべてのコンポーネントを含むIISセットアップキーです。

+0

これは、完璧な、ありがとう! –

0

あなたは簡単な方法をお望みですか?素敵なかわいいです。ASP.NETがインストールされていることを示すプレースホルダのエラーブロックを含むHTMLとして表示されるaspxページツールはこのWebページを既定のブラウザで、*:80サイトとしてIISで指定されたディレクトリにコピーした後に起動します(または、XMLを変更して後で削除することによってプログラムでIISにディレクトリマッピングを作成してから削除します)

最も洗練されていますが、実際にインストールされている機能とXMLファイルに含まれている機能がテストによって確実に表示されます。


それは私が私が私が使用することができますどのような機能をJavaScriptで知るための唯一の方法は、私はそれらを使用しようとする前にそれらをテストすることであることを思い出させるよ「それに怠惰な無知の道をやる」悲鳴ますので、または彼らがそこにいると仮定し、それが爆破するのを見ます。私の指摘は、ファイル内で何が報告されるかは重要ではなく、実際に使用できることは重要です。ちょうどC:\ Windows \ Micrsoft.Net \ Framework \ v3.xxxxxxxxが存在し、ファイルを持っているからといって、DLLがGACに登録されているわけではありませんか?

+0

私はこれに熱心ではありません。私は本当にバックグラウンドでエンドツーエンドのチェックを設定するのではなく、ユーザーに質問せずに、必要なすべてのURLを正しく処理するなど、特定の「このコンポーネントが見つからない」テストを探しています。間違いなく問題ですが、欠落しているコンポーネントを探すことにはもっと関心があります。私の目的のために、.net3フォルダが存在するかどうかを確認するだけで十分です。 –

+0

私はそれが怠惰な簡単な方法だと言ったように。 VMのクリーンマシンにインストールされたASP.NETの前後にapplicationHost.configのスナップショットを作成しようとしましたか? – jcolebrand

+0

はい、私は2つの設定ファイルの間でdiffを行いましたが、信頼できるのは質問に記載されている2つの設定だけです。より具体的な内容で質問を更新しました。 –

2

asp.netがインストールされている機能(これを有効にするための前提条件)であるかどうかを判断するには、PowerShellを使用できます。これは、十分に掘り下げれば.net apiがあることを意味します。 PowerShellのメソッド:

Import-Module servermanager 
Get-WindowsFeature web-asp-net 

Microsoft.Windows.ServerManager.Commands.Featureのオブジェクトを返します。 installedプロパティはブール値で、機能がインストールされているかどうかを示します。

+0

それを反映させる方法や、それを反映するためのアセンブリを入手する方法を知っている人は誰ですか?また、SFに行くのは良い考えでした。 – jcolebrand

関連する問題