2010-11-25 12 views
1

非常に単純なWCFサービスをHTTp Getで使用しようとしましたが、動作させることはできません。 私たちは、これらの「ガイド」に続いてきたが、それは動作しませんHTTPでWCFサービスを使用する方法(Visual Studio 2010内)

私たちは、次のURLを使用して当社のサービスを呼び出すと、我々はページが見つからないというエラーが出ます:

http://localhost:9999/Service1.svc/GetData/ABC

ベースURL(のhttp:// localhostを:9999/Service1.svc)が正常に動作し、正しくWCFサービス情報ページを返します。

これは、例を再現するための手順とコードです。

  1. のVisual Studio 2010では、新しい "WCFサービスアプリケーション" プロジェクト
  2. このコード

    [ServiceContract()] 
        public interface IService1 
        { 
         [OperationContract()] 
         [WebInvoke(Method = "GET", 
           BodyStyle = WebMessageBodyStyle.Bare, 
           UriTemplate = "GetData/{value}")] 
         string GetData(string value); 
        } 
    
  3. でこのコード

    public class Service1 : IService1 
    { 
        public string GetData(string value) 
        { 
         return string.Format("You entered: {0}", value); 
        } 
    } 
    
    でサービスクラスを交換IServiceインターフェイスを置き換えを作成
  4. web.configはこのようになります

    <system.web> 
        <compilation debug="true" strict="false" explicit="true" targetFramework="4.0" /> 
    </system.web> 
    <system.serviceModel> 
        <services> 
         <service name="Service1"> 
          <endpoint address="" binding="webHttpBinding" contract="IService1" behaviorConfiguration="WebBehavior1"> 
          </endpoint> 
         </service> 
        </services> 
        <behaviors> 
         <endpointBehaviors> 
          <behavior name="WebBehavior1"> 
          <webHttp helpEnabled="True"/> 
        </behavior> 
    </endpointBehaviors> 
    <serviceBehaviors> 
    <behavior> 
        <serviceMetadata httpGetEnabled="true"/> 
        <serviceDebug includeExceptionDetailInFaults="false"/> 
        </behavior> 
    </serviceBehaviors> 
    

  5. を押してファイル名を指定して実行し、誰かがこのまたは似たような作業を得る場合は、できれば、それはとても親切だろうGetメソッド

呼び出そう実際の例に関する情報を返信してください。魔法のように動作します -

は、私はあなたのサンプルを再作成し、非常に

答えて

1

、ありがとうございました。

ワンポイント:.NETネームスペース内にサービス契約(public interface IService1)とサービス実装(public class Service1 : IService1)が存在しますか?

ので、あなたは*の.SVCを変更する必要がある場合は、あなたweb.configが含まれるように:

<services> 
     <service name="Namespace.Service1"> 
      <endpoint address="" binding="webHttpBinding" 
        contract="Namespace.IService1" 
        behaviorConfiguration="WebBehavior1"> 
      </endpoint> 
     </service> 
    </services> 

<service name="...">属性と<endpoint contract="...">が、これが機能するためには、.NET名前空間を含める必要があります。

+0

あなたは非常に正しいです...それは、欠落しているルート名前空間のためだけでした。他のバインディングではうまく動作しますが(ルート名前空間なし)、webHttpBindingではうまく動作しません。どうもありがとうございました。 –

関連する問題