2017-01-10 4 views
1

아래 WCF RESTfule 서비스에서 POST 메소드에 대한 운영 계약서를 작성했습니다.asp.net의 Windows 서비스에서 WCF RESTful 서비스를 호출하는 방법은 무엇입니까?

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 서비스 : -

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 메서드없이 호출하면 서비스가 정상적으로 작동합니다. 위에서 언급 한 문제를 해결하는 방법? ChannelFactory을 만들 때

답변

0

만 서비스 이름을 지정하려고 :

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

내 문제의 IP 주소 마스크했다. 위의 코드로 작동하는 WebInvoke 서비스가 없으면. – RGS