質問

これまでのところ、HttpListenerを使用して小さなスタンドアロンのhttpサーバーを提供するアプリケーションを開発しています。ただし、HttpListenerを管理者として実行する必要があることを最近発見しました。これは常に可能であるとは限りません。

最良の選択肢は何でしょうか? http GETとPOSTが必要です。どちらもファイルシステム上のファイルの読み取り/書き込みだけではなく、カスタム.Netコードを実行する必要があります。

これまでの研究でカッシーニが生まれましたが、私が知る限り、カスタムバージョンを作成する必要があります。他に何かありますか? HttpListenerと同じインターフェースを備えた特別なものですが、管理者権限を必要としないものは素晴らしいでしょう!

役に立ちましたか?

解決

私が見つけた代替手段の1つは、CodePlexの C#Webサーバーです。

" ... .Netアプリケーションに組み込むことができる柔軟なhttpサーバー。モジュールを使用して機能を追加するモジュール設計です。サーバーは、RESTおよびすべてのhttp動詞もサポートしています..."

System.Net.HttpListenerに似ていると思われるHttpListenerクラスがありますが、どちらもまだ使用していないため、確信がありません。

他のヒント

これに対する1つの解決策は、この他の質問-非管理者としてHttpListenerを実行する許可を自分で与えることができます。

アクセス許可を整理してから実際のアプリを実行するコマンドファイルからアプリを起動できます。

Will Deanの投稿のコメントのように、次のnetshコマンドを実行できます。

netsh http add urlacl url=http://+:8346/ user="NTAuthority\Authenticated Users" sddl="D:(A;;GX;;;AU)"

「http:// +:8346 /」を実際の値に置き換えます。これにより、認証されたユーザーがターゲットエンドポイントでWebサーバーを実行できるようになります。

ステートメントについて:

  

最近、HttpListenerを管理者として実行する必要があることを発見しました

それは完全に真実ではなく、他の回答のいくつかは理由の1つに触れていますが、別の理由があります:

  1. 他の投稿者からの注記:管理者以外のユーザーに権限を付与できます。結構ですが、素晴らしいとは言えません。
  2. 管理者でなくても、ポート80でもローカルホストでリッスンできます。注:" localhost"のみを思い出します" 127.0.0.1"ではなく動作します... localhostをPrefixes.Add呼び出しに渡すようにしてください。

開発者がPCでHTTPベースのアプリホストを実行できるようにする内部ツールを出荷しており、最初は管理者(または管理者が付与した権限)の問題によりHttpListenerを使用できないと考えていましたが、 localhostは管理者でなくても正常に機能することがわかりました。それは一種の理にかなっています。外部から聞くことは「危険」です。しかし、ローカルマシンで聞くことはそれほど危険ではありません。

さて、インバウンドhttp接続を許可する必要がある通常のデスクトップアプリがあります-うーん-Windowsファイアウォールは問題になりませんか?

そうでないと仮定すると、それはほとんどウェブサービスのように聞こえます-あなたはそのルートに行くことができます-それを介してURLを公開しますか?ただし、私の.Netの知識は、特定のhttpサーバーを実行してリクエストに応答する必要があるかどうかを知るほど十分ではありません。 Spring.Net はおそらく一見の価値があります。

Nowin は、 Owin ServerFactory として、 HttpListener に依存しません。差し込むことなく Microsoft.Owin.Host.HttpListener libを差し替えることができました

.NET Coreアプリケーションには、新しい(クロスプラットフォーム)HTTPサーバー実装があります:ケストレル

ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top