私は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=7035 を参照してください)。
同じ状況に直面したことがありますか?私はすべてのアドバイスを見てうれしいです。
残念ながら、例外テキストのリンク http://go.Microsoft.com/fwlink/?LinkId=7035 は壊れています。ただし、以前は 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
コマンドに関するヘルプを提供します。
Visual Studio IDEを閉じ、Visual Studioアイコンを右クリックして「管理者として実行」と言って再度開きました。その後、ホストを実行したときに動作しました!!!
Visual Studio>管理者として実行>プロジェクトを開き、サービスを実行します。これは特権に関連する問題です。
ローカルエリアネットワークのマシンを使用している場合は、アカウントに管理者権限が必要です。ユーザーに管理者権限を適用する場合は、管理者としてideを起動する必要があります...
必要な簡単なことは、「管理者として実行」を使用してVisual Studio環境を閉じ、再度開くことです。これで正常に実行されるはずです。
Windows Vista以降では、制限されたアカウントにはその権利がないため、HTTP WCFサービスのスタッフが上記の例外を引き起こします。これが、管理者として実行したときに機能した理由です。
すべての賢明な開発者は、管理者としてではなく、RESTRICTEDアカウントを使用する必要がありますが、多くの人々が間違った方向に進んでいます。怠zyな方法で作業すると、怠zyなソリューションになります。制限付きアカウントで引き続き作業してください(おめでとう)。
WCF用に定義したこれらのサービスURLの制限付きユーザーアクセス許可を付与することになっていることを正しく覚えている場合、NamespaceManagerToolと呼ばれるツールがあります(2008年以降)。私はそれを使っていません...
Console.ReadLine()
行の前にserviceHost.Close()
を含めるのを忘れたため、サンプルコードは示されているように機能しません。つまり、ホストが開かれ、すぐに閉じられます。
それ以外は、マシンのパーミッションに問題があるようです。マシンの管理者アカウントとしてログインしていることを確認してください。管理者であれば、HTTP要求を処理するためにWorld Wide Web発行サービス(W3SVC)を実行していない可能性があります。
私は他のユーザーのソリューションに続いて1台のコンピューターでこの問題を解決できましたが、コマンドnetsh
は私のマシンの1つで問題を解決しませんでした。現在のユーザーが管理者権限を持っていても、 "HTTPはURLを登録できませんでした。..プロセスにはこの名前空間へのアクセス権がありません。"したがって、他のユーザーと連携できない場合に備えてソリューションを共有していますソリューションも。
私のウェブサイトの物理ディレクトリでユーザーに書き込み権限を与えようとしても成功しなかった後、最終的にchangeIISsettingsを試みることにしました。
以下の画像が示すように、特定のユーザーとして接続するようにWebサイトのPhysical Path Credentialsを構成しました。これはDOMAIN\usernameとpasswordを持つ管理者アカウントであり、これでエラーが消えます。