0

一連の .NET クラス ライブラリを開発していますが、それらを Web サイトから実行したくありません。つまり、ユーザーは、Windows デスクトップ アプリケーションを介してのみライブラリを使用/呼び出すことができました。たとえば、ユーザーがこれらのライブラリを Web サイトの ASP.NET Web アプリケーションで使用できるようにしたくありません。これを達成する方法はありますか?

4

4 に答える 4

4

いいえ。IIS でライブラリの実行を停止したとしても、誰かがライブラリでデスクトップ アプリを実行し、IIS から通信することができます。

于 2010-02-09T15:41:17.447 に答える
4

サーバー側の ASP.Net AppDomain でコードが実行されないようにするには、HttpRuntime.AppDomainAppVirtualPathそうでないかどうかを確認nullし、例外をスローします。

ただし、誰かが ASP.Net とは別の AppDomain でアプリを実行することを止めることはできません。また、誰かがアプリをサービスとして実行し、WCF または名前付きパイプを使用して ASP.Net に公開することを止めることもできません。

なぜこれをやろうとしているのですか?

編集:あなたのコメントに答えるには、それも完全に行うことは不可能です。HOST ヘッダーを確認すると、誰かが を使用して無効にすることができSimpleWorkerRequestます。
さらに、アセンブリを編集することで、何でも打ち負かすことができます。(完全な難読化ツールはありません)

于 2010-02-09T15:41:36.997 に答える
1

いいえ、そうではありません。

ただし、アプリケーションによっては、オンラインで使用するアプリケーションを無効にすることができる場合があります。名前付きミューテックスを使用すると、一度に 1 つの操作のみが開始されるようにすることができます。デスクトップ アプリケーションの 1 つのインスタンスを開始するのと同様に、たとえば DoWork() へのすべての呼び出しが連続していることを確認します。

これは、Web を使用しているため、繰り返し電話をかけることができなかったことを意味します。ただし、デスクトップ アプリでの使用をどのように想定するかによって異なります。

于 2010-02-09T15:45:01.667 に答える
0

他のソリューションと同じように、あまり安全ではありませんが、Application.MessageLoopを使用してメッセージ ループが実行されているかどうかを確認できます。これは通常、Web アプリケーションではなく、WinForms アプリケーションでは当てはまります。

于 2010-02-09T15:47:00.963 に答える