一連の .NET クラス ライブラリを開発していますが、それらを Web サイトから実行したくありません。つまり、ユーザーは、Windows デスクトップ アプリケーションを介してのみライブラリを使用/呼び出すことができました。たとえば、ユーザーがこれらのライブラリを Web サイトの ASP.NET Web アプリケーションで使用できるようにしたくありません。これを達成する方法はありますか?
4 に答える
いいえ。IIS でライブラリの実行を停止したとしても、誰かがライブラリでデスクトップ アプリを実行し、IIS から通信することができます。
サーバー側の ASP.Net AppDomain でコードが実行されないようにするには、HttpRuntime.AppDomainAppVirtualPath
そうでないかどうかを確認null
し、例外をスローします。
ただし、誰かが ASP.Net とは別の AppDomain でアプリを実行することを止めることはできません。また、誰かがアプリをサービスとして実行し、WCF または名前付きパイプを使用して ASP.Net に公開することを止めることもできません。
なぜこれをやろうとしているのですか?
編集:あなたのコメントに答えるには、それも完全に行うことは不可能です。HOST ヘッダーを確認すると、誰かが を使用して無効にすることができSimpleWorkerRequest
ます。
さらに、アセンブリを編集することで、何でも打ち負かすことができます。(完全な難読化ツールはありません)
いいえ、そうではありません。
ただし、アプリケーションによっては、オンラインで使用するアプリケーションを無効にすることができる場合があります。名前付きミューテックスを使用すると、一度に 1 つの操作のみが開始されるようにすることができます。デスクトップ アプリケーションの 1 つのインスタンスを開始するのと同様に、たとえば DoWork() へのすべての呼び出しが連続していることを確認します。
これは、Web を使用しているため、繰り返し電話をかけることができなかったことを意味します。ただし、デスクトップ アプリでの使用をどのように想定するかによって異なります。
他のソリューションと同じように、あまり安全ではありませんが、Application.MessageLoopを使用してメッセージ ループが実行されているかどうかを確認できます。これは通常、Web アプリケーションではなく、WinForms アプリケーションでは当てはまります。