2014-01-26 2 views
0

프록시를 통해 Windows 양식에서 호출 할 수있는 기존 웹 WCF 웹 서비스가 있습니다.Windows Form 및 jQuery에서 웹 서비스 호출

이 서비스를 jQuery에서도 호출 할 수 있기를 바랍니다.

나는 다음 오전 다음 기사 : 이미

<services> 
    <service 
     behaviorConfiguration="ProductServiceBehavior" 
     name="ProductServiceHost.ProductService"> 
    <endpoint 
     address="" 
     binding="basicHttpBinding" 
     contract="ProductServiceHost.IProductService" /> 
    </service> 
</services> 

내 설정 파일 : 그러나 http://www.codemag.com/Article/1308041

, 나는 문서에서는 서비스의 web.config에 다음 코드를 추가 붙어 말한다이기 때문에

<service 
    behaviorConfiguration="MyApp.EndPoint.Services.TrainingServiceBehavior"  
    name="MyApp.EndPoint.Services.TrainingService"> 
    <endpoint 
    address="" binding="wsHttpBinding" 
    contract="MyApp.EndPoint.Services.Interface.ITrainingService" 
    name="wsHttp" 
    bindingConfiguration="wsHttpBindingConfiguration"> 
    <identity> 
     <dns value="localhost" /> 
    </identity> 
    </endpoint> 
    <endpoint address="mex" binding="mexHttpBinding" contract="IMetadataExchange" /> 
</service> 

바인딩을 basicHttpBinding으로 바꾸려고했지만 서비스를 호출 할 때 오류가 발생합니다. f ROM에서 "원격 서버에서 오류를 반환했습니다 : (415) 지원되지 않는 미디어 유형"과 같은 내 Windows 양식.

내 서비스에 위의 바인딩이 모두 있어야합니까?

기본적으로 변경 사항은 다음 단계에서 실패합니다. 모든 응용 프로그램이 여전히 작동하는지 확인하려면이 시점에서 기존 응용 프로그램을 실행해야합니다.

누구나 올바른 방향으로 나를 가리킬 수 있습니까?

<service 
     behaviorConfiguration="MyApp.EndPoint.Services.TrainingServiceBehavior" 
     name="MyApp.EndPoint.Services.TrainingService"> 
    <endpoint 
     address="" 
     binding="basicHttpBinding" 
     contract="MyApp.EndPoint.Services.Interface.ITrainingService" /> 
    </service> 

나는 또한 다음과 같은 장식 추가 :

내가 config 파일에 다음을 추가는 서비스를 호출 할 때 그러나

[WebInvoke(Method = "POST", 
BodyStyle = WebMessageBodyStyle.WrappedRequest, 
ResponseFormat = WebMessageFormat.Json, 
RequestFormat = WebMessageFormat.Json)] 

를 내 윈도우 폼 응용 프로그램은 이제 다음과 같은 오류를 가져옵니다 :

서버가 의미있는 응답을 제공하지 않았습니다. 이는 계약 불일치, 조기 세션 종료 또는 내부 서버 오류로 인해 발생할 수 있습니다.

아마도 같은 이름의 구성 파일에 두 개의 서비스가 있기 때문에 오류가 발생했을 수 있습니다. 새 서비스에 새 이름을 지정하면 새 방법을 만들어야합니까?

동일한 방법을 사용하려고하지만 불가능한 것 같습니다.

+1

구성에 두 가지 서비스가 없어야합니다. 여러 개의 엔드 포인트를 가진 하나의 서비스 (이미 그 이름 ='MyApp.EndPoint.Services.TrainingService')가 필요합니다. 서비스에는 두 개의 엔드 포인트가 있습니다 (엔드 포인트에는'address = ""및 엔드 포인트에는'address = "mex"'가 있습니다). jquery의 경우'address = "Web"'을 갖는 새로운 끝점을 추가해야합니다. 해당 엔드 포인트의 세부 사항은 링크 된 기사에 설명되어 있습니다. 네 사건에서 내가 뭘 할거야? 작동하는 구성 (양식 테스트)에서 시작하여 설명 된대로 새 엔드 포인트 및 동작을 추가하십시오 (양식 테스트). jquery로 새 엔드 포인트를 사용하십시오. – venerik

+0

감사합니다. vererik - 그 길을 따라 어떤 길을 가졌습니다. – Matt

답변

1

현재 구성을 그대로 둘 수 있다고 생각합니다. 아티클의 변경 사항은 기존 서비스의 구성을 명시 적으로 지정하기 위해 (바인딩, 계약 및 동작을 설명함으로써) 매우 기본적인 구성으로 이루어집니다. 구성에 이미 서비스가 명시 적으로 명시되어 있습니다.

jquery에 대한 새로운 구성을 추가하여 새로운 동작 추가 및 새 끝점 추가를 참조하십시오.

+0

둘 다 동일한 방법을 사용할 수 있습니까? 이 기사에서는 jQuery에서 사용할 장식을 추가한다고 말합니다 (내 서비스는 매개 변수를 사용합니다). – Matt