HTTPはURL http:// +:8000 / HelloWCF /を登録できませんでした。プロセスには、この名前空間へのアクセス権がありません


179

私はWCFの初心者ですが、私の経験を改善しようとしています。そして最初のステップで私は問題に直面しました。最も単純なWCFサービスを作成しました。コードのリスト:(1つのファイル内のすべてのコード)

using System;
using System.ServiceModel;

namespace EssentialWCF
{
    [ServiceContract]
    public interface IStockService
    {
        [OperationContract]
        double GetPrice(string ticker);
    }

    public class StockService : IStockService
    {
        public double GetPrice(string ticker)
        {
            return 94.85;
        }
    }

    class Service
    {
        static void Main(string[] args)
        {
            ServiceHost serviceHost = new ServiceHost(typeof(StockService),
                                                        new Uri("http://localhost:8000/HelloWCF"));

            serviceHost.AddServiceEndpoint(typeof(IStockService), new BasicHttpBinding());
            serviceHost.Open();

            Console.WriteLine("To continue press ENTER");

            serviceHost.Close();
        }
    }
}

それはコンソール経由で私に番号を与えるサービスでしょう。しかし、デバッグは私に例外を与えます:(番号の代わりに:))

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

同じ状況に直面したことがありますか?私はあらゆるアドバイスを見てうれしいです。


よくわかりません。そのHTMLエスケープテキストはコードの一部であるはずですか?
エイミー

1
その他のオプション[のためにここを見てstackoverflow.com/questions/885744/...
shankbond

回答:


231

残念ながら、例外テキストのリンクhttp://go.microsoft.com/fwlink/?LinkId=70353は壊れています。ただし、以前は、アクセス許可の設定方法を説明するhttp://msdn.microsoft.com/en-us/library/ms733768.aspxにつながっていました。

基本的には、次のコマンドを使用するように通知します。

netsh http add urlacl url=http://+:80/MyUri user=DOMAIN\user

あなたはの助けを使用して詳細についてのより多くの助けを得ることができます netsh

例えば: netsh http add ?

http addコマンドのヘルプを提供します。


3
この方法は、自動テストサーバーに必要な権限を設定する場合にも役立ちます。
テクノバブル2013

8
管理者コマンドプロンプトからコマンドを実行してください。
mbonness

3
ドメインを使用COMPUTER_NAME\USER_NAMEしていない場合は、上記のコマンドで使用してください。
dotNET 2016年

netsh http add urlacl url=http://+:80/ user=DOMAIN\userポート上の任意のネームスペースへのアクセス権をアカウントに付与する場合は、これを実行できます。
Hamid Heydarian 2017年

これはクライアントマシン、サーバー、またはその両方で実行する必要がありますか?andhttp://で何を使用する必要がありますか?クライアントまたはサーバーのIP?いつものようにヘルプは役に立たない
GuidoG '10 / 07/17

177

Visual Studio IDEを閉じ、Visual Studioアイコンを右クリックして「管理者として実行」と言って再度開き、ホストを実行したところ、動作しました!!!


17
まず、これは悪い習慣ですが、Visual Studioではほとんど選択肢がありません。第二に、問題は他のステップ(たとえば、展開)に残っています。ブライアンの答えや参照blogs.msdn.com/b/paulwh/archive/2007/05/04/...
ステフェイン・グーリッホン

3
やれやれだぜ!フリギンMS、それ自体と戦うさまざまな機能を作ります。「最小限の特権」についてはこれで終わりです。
Dan Csharpster 2013

1
ベストプラクティスかどうか、これはMSに関するものです。WCF / .NETが非常に特殊で、ジャンプするのにもう1つのフープが必要なのはなぜですか?Windowsで実行されているJavaでサービスを作成すると、ローカルで動作します。公開したい場合は、ファイアウォール、スイッチャー、ルーターなどを調整します
Kai Wang

1
-1。これは正しいことではありません。制限されたユーザーに明示的な許可を与え、それを使用する必要があります。以下の@ブライアンの答えはより良いです。
Daniel James Bryars、2015

2
-1。問題があり、問題が解決したと言ってハードドライブを再フォーマットするのと同じです。答えは、指摘されたように、netsshを実行することです
スタンバシュタベンコ

19

Visual Studioを右クリック>管理者として実行>プロジェクトを開いてサービスを実行します。これは特権関連の問題です。


私のために働いた。ありがとう!
Losbear

14

ローカルエリアネットワーク内のマシンの場合、アカウントに管理者特権が必要です。次に、ユーザーに管理者特権を適用します。それ以外の場合は、管理者としてideを開始する必要があります。


2
これが、WCF Windowsサービスで必要なことです。ビルドマシンでサービスを実行するために新しいドメインアカウントを使用していました。私のサービスが起動し、その例外をスローします。管理者権限を付与すると、完全に機能しました。
thehelix

これで解決しました。サービスを右クリックし、[ログオン]タブで[ローカルシステムアカウント]を選択します
Alexander Derck

11

あなたがする必要がある簡単なことは、Visual Studio環境を閉じて、「管理者として実行」を使用して再び開くことです。これで正常に実行されるはずです。


18
管理者として実行すると問題が回避されるだけで、問題は解決しません。
ProfK 2014年

6

Windows Vista以降では、制限されたアカウントにはそれに対する権利がないため、HTTP WCFサービスのものは、あなたが言及した例外を引き起こします。これが、管理者として実行したときに機能した理由です。

すべての賢明な開発者は、管理者としてではなくRESTRICTEDアカウントを使用する必要がありますが、多くの人が間違った方法で行っているため、実際には多くのアプリケーションが存在し、本当に必要とされないときに管理者権限を要求します。レイジーな方法で作業すると、レイジーなソリューションになります。引き続き制限付きアカウントで作業してください(おめでとうございます)。

WCF用に定義したこれらのサービスURLに対する制限付きユーザーのアクセス許可を付与することになっていると私が正しく覚えている場合、NamespaceManagerToolと呼ばれるツールが(2008年から)そこにあります。まだ使ってないけど...


あなたが考えているツールはHttp Namespace Managerと呼ばれています。これは、MSによってサポートされていないのですが、それはここで入手可能です:blogs.msdn.com/b/paulwh/archive/2007/05/04/...
ギャレス

1

Console.ReadLine()前にserviceHost.Close()行を含めるのを忘れたため、サンプルコードは図のように機能しません。つまり、ホストが開かれ、すぐに閉じられます。

それ以外に、あなたのマシンで許可の問題があるようです。マシンに管理者アカウントとしてログインしていることを確認してください。管理者の場合、HTTPリクエストを処理するためのWorld Wide Web Publishing Service(W3SVC)を実行していない可能性があります。


私はすでにこの問題を修正しましたが、それは私のcmdアカウントが原因ではなく、(もちろん)ReadLine()が原因でもありません-ポイントが例外にあるためです(cmdの結果ではありません)。
valecoder 2012年

私はstackoverflow.com/questions/885744/…でそれを解決しました。
valecoder

1

私は他のユーザーのソリューションを、次の一台のコンピュータでこの問題を解決することができましたが、コマンドは、netsh私のマシンのいずれかで問題を解決していないと、現在のユーザーが管理者権限を持っていたにもかかわらず、私はまだなっていた「HTTPを登録することができませんでしたURLを....プロセスには、この名前空間へのアクセス権がありません。」したがって、他のソリューションでも機能しない場合に備えて、私のソリューションを共有しています。

また、自分のWebサイトの物理ディレクトリでユーザーに書き込み権限を与えようとしても成功しなかったため、ついにIISの設定変更することにしました。

以下の画像が示すように、DOMAIN \ usernameとパスワードを持つ管理者アカウントである特定のユーザーとして接続するようにWebサイトの物理パス資格情報を構成しましたが、これでエラーが表示されなくなりました。

ここに画像の説明を入力してください

ここに画像の説明を入力してください

ここに画像の説明を入力してください


-1

iis expressとすべてのブラウザーを閉じます(URLがいずれかのブラウザーで開かれている場合)。また、管理者モードでVisual Studio IDEを開きます。これで私の問題は解決しました。


問題は解決しませんでした。管理者モードでIDEを使用することも別の問題であり、おそらくもっと深刻です。
Preza8
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.