2012-03-24 94 views
3

私の以前の質問はwcfを安らかなサービスに変えようとしていたので、助けてくれたconvert a WCF Service, to a RESTful application?wcf/restをリッスンしているエンドポイントがありません

しかし、私は私のクライアントからの新しい問題に実行しています:

enter image description here

そして、私は追加することができます。

There was no endpoint listening at http://localhost:26535/Service1.svc that could accept the message.
This is often caused by an incorrect address or SOAP action. See InnerException, if present, for more details.

今スクリーンダンプから分かるように安らかなサービスが実行されますurlの値から1ように:

enter image description here

しかし、まだ、私は、Visual Studioの別の新しいインスタンス上で実行するように見えるカントは、私のクライアントのapp.configは次のようになります。

<?xml version="1.0" encoding="utf-8" ?> 
<configuration> 
    <system.serviceModel> 
     <bindings> 
      <customBinding> 
       <binding name="WebHttpBinding_IService1"> 
        <textMessageEncoding maxReadPoolSize="64" maxWritePoolSize="16" 
         messageVersion="Soap12" writeEncoding="utf-8"> 
         <readerQuotas maxDepth="32" maxStringContentLength="8192" maxArrayLength="16384" 
          maxBytesPerRead="4096" maxNameTableCharCount="16384" /> 
        </textMessageEncoding> 
        <httpTransport></httpTransport> 
       </binding> 
      </customBinding> 
     </bindings> 
     <client> 
      <endpoint address="http://localhost:26535/Service1.svc" binding="customBinding" bindingConfiguration="WebHttpBinding_IService1" 
       contract="ServiceReference1.IService1" name="WebHttpBinding_IService1" /> 
     </client> 
    </system.serviceModel> 
</configuration> 

クライアントコード:

namespace WindowsFormsApplication1 
{ 
    public partial class Form1 : Form 
    { 
     public Form1() 
     { 
      InitializeComponent(); 
     } 

     private void Form1_Load(object sender, EventArgs e) 
     { 

     } 

     public ServiceReference1.Service1Client testClient = new ServiceReference1.Service1Client(); 
     private void button1_Click(object sender, EventArgs e) 
     { 
      label1.Text = testClient.GetData(Convert.ToInt32(textBox1.Text)); 
     } 
    } 
} 

私は、以前の問題を見ていましたここのこの地域では:WCF - "There was no endpoint listening at..." error

しかし解決策はありませんか?私はIIS上でのホスティングに精通していないか、これは単なる習慣ではないので、デバッグ(F5)で動作させることは簡単です!

+0

内部例外は何ですか?それはこれにもっと光を当てるかもしれません。 –

+0

内部例外を実行すると、リモートサーバーからエラーが返されたというメッセージだけが表示されます。(404)が見つかりません。 –

答えて

2

これは、実際にはRESTサービスが変更されたためです。

は、あなたのホストの設定

<endpoint address="mex" binding="mexHttpBinding" contract="IMetadataExchange"/> 

からこれをコメントアウト/削除してくださいあなたが、あなたのサービス参照をリセットするとRESTは、任意のメタデータ(MEXのため除去)

上を通過しないようですそれは正常に動作するはずです...私は信じています。

また、this articleは、サードパーティを使用することができますならば、私はRestSharpを使用することをお勧めし

有用であることが分かるかもしれません。それは、RESTfulサービスを非常に簡単に消費するようになります:)

また、これらの呼び出しをより直接的にすることができる新しいWebAPIを使用できますか?問題は、RESTfulなサービスがSOAP呼び出しのように簡単には消費されないということです。

+0

クライアントのバインディングをwebhttpbindingに変更した場合、次の問題によりservice referenceの設定を更新できないというservicereferenceを更新する際にエラーが発生します: 'system.servicemodel/binding/webhttpbinding'のダンピングには'webhttpbindig_Iservice1'という名前のバインドされたバインディングです。これは' app.config 17行目で無効な値のバインディングです。 ' –

+0

OK、カスタムバインディングを戻しますが、サービスからmexを外して何が起こるかを確認してください。私はあなたが今GETを探しているときにこれがまだPOSTを送信していると信じさせます... http://forums.asp.net/t/1695037.aspx/1送信されているものを見るためにfiddlerを使用できますか?電線の向こう側に? –

+1

実際には、とりわけこれ。私はRestSharpを見てみることをお勧めします。私はあなたがそれを使うことができるかどうか分からないが、それはRESTサービスを非常に単純に消費することになる。 –

関連する問題