2

特定のタスクのために、WPF アプリケーション内で自己ホスト型サービスを使用しています。サービス ホストは実行時に開始され、そのベース アドレスはhttp://localhost:Whatever-port-is-free-at-runtime. これは、ユーザーが管理者権限を持っている場合は正常に機能しますが、制限されたユーザーがアプリケーションを実行すると問題が発生します。

netsh/httpcfg管理者ユーザーには問題なく機能しますが、制限されたユーザーにはおそらくこれらのツールを使用して URL を予約する権限がないため、失敗するURL を予約することを提案する Web 上のいくつかの提案を見つけました。ポート番号は実行時までわからないため、url 予約コマンドは論理的に実行時にしか実行できません。つまり、コマンドを実行する権限を持たない制限付きユーザーによってプロセスが開始されます。これを考えるのは正しいですか?

私が知りたいのは、適切な回避策があるかどうかです。また、制限されたユーザーがローカルでホストされている WCF サービスを開くことができるかどうかを知りたいのですが、制限されたユーザーがこれを行うことができなかった場合、前述の問題を解決しても意味がありません。

この質問は、URL 予約の私の最初の問題を完全に説明しています

4

1 に答える 1

1

WCF では、HTTP および HTTPS バインディングは、内部で HTTP.sys を使用して、特定の WCF サービスに必要な URL を予約します。これは、IIS 自体が管理する Web サイトのバインディングを実行するときにたどるパスと同じです。これは、HTTP/HTTPS バインディングを実行するプロセスを昇格モードで実行する必要がある理由を説明しています。

そうは言っても、私はあなたの問題を2つの異なる方法で解決します:

オプション 1:別の種類のバインディングを使用しますたとえば、 NetTcpBindingNetNamedPipesBindingは通常、管理者権限を必要としません。これが最も簡単な方法です。

オプション 2:インストール時に必要な名前空間の予約をセットアップします。このようにして、ユーザーに昇格モードでインストールを実行するように依頼し、後で制限されたアカウントが実行できるようにすることができます。最初のインストール/予約を実行しているときに、使用可能なポートを見つけることもできます (後で再利用するために構成ファイルに保存することもできます)。

于 2013-03-27T13:54:53.533 に答える