none
WCF에 webHttpBinding과 basicHttpBindg을 동시에 사용은 불가능한가요?? RRS feed

  • 질문

  • 하나의 WCF를 구성했습니다.

    두개의 메소드를 만들었고,

    하나의 메소드는 ASP.NET 페이지에서 aJax를 이용한 JSON 데이터를 위해 만들었고

    또 하나의 메소드는 그냥 일반적으로 코드비하인드에서 사용하려고 만들었습니다.

    JSON 데이터를 보내기 위해 만든 메소드는 아래와같고

     [OperationContract]
            [WebInvoke(Method = "POST", RequestFormat = WebMessageFormat.Json, ResponseFormat = WebMessageFormat.Json)]
            string GetData();

    일반적으로 사용하려는 메소드는 아래와같습니다.

    [OperationContract]
            string TestMethod();

    JSON 데이터를 받기위한 메소드는 정상적으로 잘 작동합니다만.

    TestMethod 메소드를 호출을하면 수신대기중인 끝점이 없다고 계속 에러가 발생하네요.

    ASP.NET Web.config 에 Binding 정보를 입력했는데도 계속 이러네요.

    ASP.NET Web.Config

      <system.serviceModel>
        <bindings>
          <basicHttpBinding>
            <binding name="BasicHttpBinding_IDataService" maxBufferSize="2147483647"
                maxReceivedMessageSize="2147483647">
              <security mode="None" />
            </binding>
          </basicHttpBinding>
        </bindings>
        <client>
          <endpoint address="http://localhost:51418/DataService.svc" binding="basicHttpBinding"
              bindingConfiguration="BasicHttpBinding_IDataService" contract="DataService.IDataService"
              name="BasicHttpBinding_IDataService" />
        </client>
      </system.serviceModel>

    WCF Web.Config

                

    <?xml version="1.0" encoding="utf-8"?>
    <configuration>

      <system.web>
        <compilation debug="true" targetFramework="4.0" />
      </system.web>
      <system.serviceModel>

        <!-- ************ HELP 페이지를 호출 & 웹서비스를 노출하기 위해 추가 ************ -->
        <services>
          <service name="AjaxApp.DataService">
            <endpoint behaviorConfiguration="DataServiceBehavior" binding="webHttpBinding" contract="AjaxApp.IDataService" />        
          </service> 
        </services>

         <behaviors> 
           <endpointBehaviors>
             <behavior name="DataServiceBehavior">
               <webHttp helpEnabled="true"/>
             </behavior> 
           </endpointBehaviors>

           <!-- ************ 끝 ************ -->

          <serviceBehaviors>
            <behavior>
              <!-- 메타데이터 정보를 공개하지 않으려면 배포하기 전에 아래의 값을 false로 설정하고 위의 메타데이터 끝점을 제거하십시오. -->
              <serviceMetadata httpGetEnabled="true"/>
              <!-- 디버깅 목적으로 오류에서 예외 정보를 받으려면 아래의 값을 true로 설정하십시오. 예외 정보를 공개하지 않으려면 배포하기 전에 false로 설정하십시오. -->
              <serviceDebug includeExceptionDetailInFaults="false"/>
            </behavior>
          </serviceBehaviors>
        </behaviors>
        <serviceHostingEnvironment multipleSiteBindingsEnabled="true" />
      </system.serviceModel>
     <system.webServer>
        <modules runAllManagedModulesForAllRequests="true"/>
      </system.webServer> 
    </configuration>

    Config 속성은 저렇게 되어있고 두번째 메소드를 아래와 같이 호출하면

     DataServiceClient client = new DataServiceClient(new BasicHttpBinding(), new EndpointAddress("http://localhost:51418/DataService.svc"));
                var dd = client.TestMethod();

    메시지를 수락할 수 있는 http://localhost:51418/DataService.svc에서 수신 대기 중인 끝점이 없습니다. 이것은 흔히 잘못된 주소나 SOAP 동작으로 인해 발생합니다. 자세한 내용은 InnerException(있을 경우)을 참조하십시오.

    와 같은 에러메시지가 발생합니다. 분명 Config 파일에 Binding 정보, EndPoint 정보도 다 넣었는데도 이이러네요.. 혹시 WCF서비스의 Web.Config 에서 뭔가를 수정해줘야 하는건가요?? 아니면 webHttpBindg과 BasicHttpBindg 두개는 하나의 WCF 서비스에서는 사용할 수 없는건가요??

    2013년 5월 1일 수요일 오전 7:21

모든 응답

  • WebHttpBindng을 이용해 보시기 바랍니다.

    The WCF Web Programming Model allows developers to expose WCF Web services through HTTP requests that use "plain old XML" (POX) style messaging instead of SOAP-based messaging. For clients to communicate with a service using HTTP requests, an endpoint of the service must be configured with the <wsHttpBinding> that has the <WebHttpBehavior> attached to it.

    [참고자료]

    <webHttpBinding>

    2013년 5월 16일 목요일 오전 4:01
    중재자