WCF ServiceHostアクセス権


166

WCFチュートリアルを実行すると、次のエラーが表示されます。

HTTPはURL http:// +:8000 / ServiceModelSamples / Service /を登録できませんでした。プロセスには、この名前空間へのアクセス権がありません(詳細については、http://go.microsoft.com/fwlink/?LinkId = 70353を参照してください)。

これはWindows 7の制限によるものですか?


あなたはこのブログで多くの有用な情報を見つけることができます。ちょっといいGUIツールも提供しています。
ボブ

回答:


179

問題は、URLがWindowsによって作成されないようにブロックされていることです。

修正手順:管理者としてコマンドプロンプトを実行します。ACLにURLを追加します

netsh http add urlacl url=http://+:8000/ServiceModelSamples/Service user=mylocaluser

4
修正してくれてうれしいです。「+」はどういう意味ですか?
John Saunders、

私はそれが一般的なローカルIPを意味するという予感を持っています。
ジョシュア

12
注:url = http:// +:port / pathを正確に入力する必要があります。url = address:port / pathは、あなたが思っているように機能しませんでした。また、サービスのインストーラーが設定されている場合は、ユーザーとしてネットワークサーバーを使用する必要があることにも注意してください( "NT AUTHORITY \ NETWORK SERVICE"
Mike Pateras

8
管理者アクセスを必要とせずにこれを行う方法はありますか?
setzamora 2012

1
ユーザーのアカウントを使用しても機能しませんでした。user = Everyone
Kim

90

IDE経由で実行している場合は、管理者として実行すると役立ちます。これを行うには、Visual Studio 2008/10アプリケーションアイコンを見つけて右クリックし、[管理者として実行]を選択します。


22
実際には「はるかに優れた」ソリューション@Liamではありません。企業のセットアップにおける開発環境での管理者権限は、危険なことを実行するためのより多くの権限を与える可能性があります。はるかに簡単な解決策ですが、確かに力が必要です...
スライスされていない

2
元のソリューションでは、管理者としての実行も必要でした-許可される期間は短く、もちろん、セキュリティコンテキストから何をしているのかを知る必要があります。
スティーブンニューマン

1
とにかく、管理者権限なしでこれを行うには?
setzamora 2012

完璧です。別のマシンにURLを登録する必要があるIDEからプログラムを実行していて、管理者として実行すると問題なく動作しました。
ThePartyTurtle 16

36

別の解決策は、アドレスを使用することです

http:// localhost:8732 / Design_Time_Addresses / YOUR_ADDRESS

.NET Framework(3.5)は、デバッグアドレス用にこのアドレス(http:// *:8732 / Design_Time_Addresses)を自動的に登録します。これは、デバッグやテストのためにVisual Studio内でサービスをホストする必要がある場合に役立ちます。本番環境では使用しないでください...


1
一部のサイトでは、ポート8731の代わりに、8732.を参照してください
ネナドDobrilovic

1
@DaviFiamenghi .net 3.5がインストールされていれば動作します。しかし、私は試したことはありません。通常、私はこのようなテストを統合テストと見なしているので、TFSでは実行せず、単体テストはTFSでのみ実行します。
Davide Icardi 2013年

@NenadDobrilovic Mineは8733を使用します:)。しかし、それは重要ではありません。
Hooch

1
私たちのサーバーはlocalhost:8733 / Design_Time_Addressesを使用しており、私はあなたの答えなしにそれを探すことを知りませんでした、ありがとう。また、ボブのツールは、権限を与えるされたすべてのアドレスを示した-それは私がそれは8733.おかげだった発見方法です
リーOades

30

管理者としてコマンドプロンプトを開き、以下のコマンドを記述してURLを追加します。

netsh http add urlacl url=http://+:8000/YourServiceLibrary/YourService user=Everyone

覚えておくべきいくつかのポイント:

  1. コーディングに従ってポートを変更する
  2. ライブラリ名に従ってサービスライブラリ名を変更する
  3. 「YourService」はオプションです

詳細については、HTTPおよびHTTPSの構成を確認してください。


3

管理者としてVisual Studioを開きます。実行されます。


nunit-guiにも同じ問題がありました。管理者として実行しました。
Valamas 2013年

2013と同じ問題があり、管理者が動作しないため実行している
ZoomVirus

管理者が必要な理由なぜ標準ユーザーとして実行できないのですか?
ジョン

0

動作する他のオプションは..、

アプリケーションプールでインデントを変更すると、コードを実行できます。アイデアは、より多くの特権を持つ1つのアカウントのアプリケーションプール実行アカウントを変更することです。

詳細については、このブログを使用してください

https://letrasandnumeros.com/2017/11/27/http-could-not-register-url-http-80-hellowcf-your-process-does-not-have-access-rights-to-this-namespace/


-2

私はWindows Vistaに取り組んでいます。私も同じ問題に直面しましたが、管理者権限でVS 2008を実行しようとすると、問題が解決し、サービスが稼働していました。:)


-2

管理者としてVisual Studioを実行すると問題が解決する可能性がありますが、たとえばTortoiseSVNでVisual Studioを使用する場合は、変更をコミットできません。別の可能な解決策は、サービスを管理者として実行し、残りのVisual Studioをローカルユーザーとして実行することです。



弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.