2017-01-10 2 views
1

Я создал ниже Операционный договор для метода POST в службе WCF RESTfule.Как вызвать службу WCF RESTful в службе Windows в asp.net?

IService1.cs: -

[OperationContract] 
[WebInvoke(Method = "POST", ResponseFormat = WebMessageFormat.Json, UriTemplate = "/SaveCustomerPost", 
BodyStyle = WebMessageBodyStyle.Wrapped)] 
    string SaveCustomerDetails(CustomerDetails objCustomerDetails); 

[DataContract] 
public class CustomerDetails 
{ 
    [DataMember] 
    public string Name { get; set; }  
} 

Windows Service: -

using (WebChannelFactory<ServiceReference1.IService1> cf = new WebChannelFactory<ServiceReference1.IService1>(new Uri("http://xxx/CustomerService.svc/SaveCustomerPost"))) 
{ 
    var helloService = cf.CreateChannel(); 
    ServiceReference1.CustomerDetails objCustomerDetails = new ServiceReference1.PANNoDetails(); 
    objPANNoDetails.Name = "TestName";   
    string strResult = helloService.SaveCustomerDetails(objPANNoDetails); 
} 

Клиент App.config: -

<system.serviceModel> 
    <behaviors> 
     <endpointBehaviors> 
     <behavior name="CustBehavior"> 
      <webHttp /> 
     </behavior> 
     </endpointBehaviors> 
    </behaviors> 
    <bindings> 
     <webHttpBinding> 
     <binding name="WebHttpBinding" sendTimeout="00:05:00" maxBufferSize="2147483647" 
      maxBufferPoolSize="2147483647" maxReceivedMessageSize="2147483647" 
      transferMode="Streamed"> 
      <readerQuotas maxDepth="2147483647" maxStringContentLength="2147483647" 
      maxArrayLength="2147483647" maxBytesPerRead="2147483647" maxNameTableCharCount="2147483647" /> 
      <security mode="None" /> 
     </binding> 
     </webHttpBinding> 
    </bindings> 
    <client> 
     <endpoint address="" 
      binding="webHttpBinding" behaviorConfiguration="CustBehavior" 
      contract="ServiceReference1.ICustService" name="WebHttpBinding" /> 
    </client> 
    <serviceHostingEnvironment aspNetCompatibilityEnabled="true" 
     multipleSiteBindingsEnabled="true" minFreeMemoryPercentageToActivateService="0"/> 
    </system.serviceModel> 

Не было прослушивание конечных точек в «xxx.svc/SaveCustomerDetails», которые могли бы принять это сообщение. Это часто вызвано неправильным адресом или действием SOAP. Дополнительную информацию см. В InnerException, если имеется.

Когда я вызываю вышеупомянутый метод с помощью метода WebInvoke в окне службы, я получил вышеупомянутую ошибку. Когда я вызываю вышеупомянутую услугу без метода WebInvoke, сервис работает нормально. Как решить вышеупомянутую проблему?

ответ

0

При создании ChannelFactory, попробуйте указать только имя службы:

using (ChannelFactory<ServiceReference1.ICustService> factory = new ChannelFactory<ServiceReference1.ICustService>(
    new WebHttpBinding(), 
    "http://xxx/CustomerService.svc")) 
{ 
} 
+0

Я маскирует IP-адреса в моем вопросе. Без сервиса WebInvoke, работающего с вышеуказанным кодом. – RGS

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