2012-03-24 4 views
3

Итак, мой предыдущий вопрос вращался вокруг поворота wcf в спокойное обслуживание convert a WCF Service, to a RESTful application?, что мне удалось сделать с некоторой помощью!Нет конечной точки прослушивания wcf/rest

Но я бег в новую проблему от моего клиента:

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.

Теперь успокоительная служба работает, как можно видеть из дампа экрана:

enter image description here

И я могу добавить от 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)); 
     } 
    } 
} 

Я смотрел на предыдущие проблемы в этой области на SO здесь: WCF - "There was no endpoint listening at..." error

Но это не дает решения? Я не знаком с хостингом в IIS, или что это не так, просто практика, так что работа над отладочной (F5) будет zer goood!

+0

Какое внутреннее исключение? Это может пролить свет на это. –

+0

Выполнение внутреннего исключения говорит, что удаленный сервер возвратил ошибку: (404) Не найдено. –

ответ

2

Это может быть связано с изменением службы REST.

Попробуйте удалить/закомментировать это от хост-конфигурации

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

кажется, что REST не проходит через метаданные (таким образом, удаление MEX)

Если затем сбросить ссылку на службу , он должен работать правильно ... Я верю.

Кроме того, this article может оказаться полезным

Если вы в состоянии использовать третью сторону, то я бы предложил использовать RestSharp. Он очень удобен для использования сервисов RESTful :)

Или вы можете использовать новый WebAPI, который также может сделать эти звонки более прямым? Проблема в том, что службы RESTful не так легко потребляются, как SOAP-вызовы есть/были

+0

если я изменяю привязку в моем клиенте к webhttpbinding, я получаю сообщение об ошибке, обновляющее servicereference, в котором говорится: «Конфигурация для ссылки на службу не может быть обновлена ​​из-за следующей проблемы: обход в' system.servicemodel/binding/webhttpbinding' не имеет сконфигурированное связывание с именем 'webhttpbindig_Iservice1' это и недопустимое привязку значения в строке' app.config 17 ' –

+0

ОК, добавьте customBinding, но сохраните mex вне службы и посмотрите, что произойдет:) ... эта статья также заставляет меня поверить, что это может по-прежнему отправлять POST, когда вы ищете GET сейчас ... http://forums.asp.net/t/1695037.aspx/1 вы можете использовать скрипач, чтобы видеть, что отправляется через провод? –

+1

Собственно, прежде всего это. Я бы предложил взглянуть на RestSharp.Я не уверен, что вы можете использовать это или нет, но он очень удобен для использования сервисов REST. –

Смежные вопросы