2012-03-25 42 views
4

私のサービスから取得しようとしているときに、サービスエンドポイントに入っていないようです。サービスエンドポイントが見つかりませんか?

私が試した場合http://localhost:8000/hello/help私は<string>You entered help <string>を見ると予想されるはずですが、代わりにエンドポイントがありません。私は設定ファイルに全く触れていないので、コンソールアプリケーションからホストしています。

ホスト:

namespace Host 
{ 
    class Program 
    { 
     static void Main(string[] args) 
     { 
      WebHttpBinding binding = new WebHttpBinding(); 
      WebServiceHost host = 
      new WebServiceHost(typeof(Service1)); 
      host.AddServiceEndpoint(typeof(IService1), 
      binding, 
      "http://localhost:8000/hello"); 
      host.Open(); 
      Console.WriteLine("Hello world service"); 
      Console.WriteLine("Press <RETURN> to end service"); 
      Console.ReadLine(); 
     } 
    } 
} 

サービス1:

namespace WcfServiceLibrary1 
{ 
    // NOTE: You can use the "Rename" command on the "Refactor" menu to change the class name "Service1" in both code and config file together. 
    public class Service1 : IService1 
    { 
     public string GetData(string value) 
     { 
      return string.Format("You entered: {0}", value); 
     } 

IService1:

[ServiceContract] 
public interface IService1 
{ 
    [WebGet(UriTemplate = "/{value}")] 
    string GetData(string value); 

答えて

6

{値}から/を削除し、それがOperationContractとしてリストされていることを確認します。それは次のようになります。

[WebGet(UriTemplate = "{value}")] 
[OperationContract] 

あなたが本当に現在のコード

+0

私はあなたが再びあなたを見てうれしいですね/私のURLはhttp:// localhost:8000/helloの最後のスラッシュ/私はそれはどちらでもかまいませんが、問題。 –

+0

@ Garrith私は自分の答えを更新しました。私はOperationContractAttributeも見つからないことに気付きました。 –

+0

運営契約がありませんでした! +1 –

0

デフォルトでは暗闇の中で刺す...、任意のプロセスにhttp://localhost:8000/hello//helpを探しているように、ベースURLは、末尾のスラッシュで通ってくるだろうネットワークポートでリッスンすることはできません。

IISをインストールすると、IISを実行するアカウントにアクセス権が与えられます。他のアプリケーション(コンソールアプリケーション、Windowsサービス)が他のアプリケーション(Windowsアプリケーションなど)によって実行されるようにするには、そのアクセス許可を付与する必要があります。

開始点としてnetsh add urlaclコマンドをチェックしてください。

+0

私のvs2010は管理者の下で動作しますか? –

+0

管理者であるということは、すべての特権を持っているという意味ではなく、自分自身に付与する権限があることを意味します。私は最近、自分自身がWCFサービスをホストしているWindowsサービスに取り組んでいました。(オンザフライで再設定できるように) - 許可を与えるためにnetshを使用するまで、私のサービスにアクセスできませんでした。 Windows Server 2008 R2でVS2010を使用していました。 – Bevan

関連する問題