24

私のアプリケーションは、小さな Web サーバーを使用していくつかのファイルをサーバー化し、リモートで管理するための Web インターフェイスを備えています。現在、ユーザーはnetshを使用してURIを登録する必要があります

netsh http add urlacl url=http://+:1233/ user=Chris-PC\Chris

これは、平均的なユーザーにとっては面白くありません。エンド ユーザーがコマンド プロンプトを使用しなくても、ユーザーがプログラムから指定した任意のポートでプログラムがリッスンできるようにしたいと考えています。Process.Startを使用してコマンドプロンプトを自分で実行するだけで、これを達成する方法はありますか?

4

2 に答える 2

1

HTTPListenerを使用している場合は、httpconfig.exeまたはnetshを使用してHTTPListenerを構成する必要があります。理由は次のとおりです。

A. AFAIK C#からこれを行うためのAPIはなく、コマンドラインツールのみです。

B.デフォルトでは、SYSTEMまたはローカルのAdministratorsグループのみがhttpプレフィックスをリッスンできます

つまり...アプリがユーザーのアカウントで実行されている場合、HTTPHandlerはHTTP.sysを使用して実行中のWebサーバーとポートを共有するため(httpcfg.exeまたはnetshを使用して)、明示的にアクセスを許可する必要があります(これにより、独自のWebサーバーをホストできます) IISがポート80でも実行されている間、ポート80のWebアプリ)。

より良い解決策は、実際の組み込みWebサーバーを使用して、必要なポートでリッスンすることです。別のアプリケーション(IISなど)がすでにポートを使用している場合、これは機能しませんが、これはポート共有にHTTP.sysを使用しないため、ポートで開いている/聞いているユーザーアカウントに関するセキュリティ制限はありません。 。ユーザーに独自のポートを指定してもらいたいので、ポート80以外の別のポートで実行することは許容できるようです。

私の会社は、 ASP.NETを実行し、プログラムでサーバーを起動/停止し、構成を設定できるNeokernel Webサーバー(http://www.neokernel.com )と呼ばれる商用製品を作成しています。このアセンブリをアプリケーションに埋め込んで配布できます。

変更して埋め込むことができるカッシーニのソースコードもあります。これは無料ですが、ロギングやSSLサポートがないなどのいくつかの欠点があります。

于 2010-05-06T16:55:11.033 に答える