2012-07-03 3 views
0

POST와 GET을 모두 내 웹 서비스에서 실행하는 데 실망한 시간을 보내고 있습니다. 멈추고, 차게해서 무엇이 잘못되었는지 알아 내야합니다.간단한 WCF 서비스 작동에 문제가 있습니다.

나는 문자열을 가져 와서 반향하는 매우 간단한 방법으로 분류했습니다. 이것은 localhost에서 설정 한 IIS에서 작동하지만 제작 상자에서 작동하지만 동일한 구성이 테스트 시스템을 손상시킵니다. 제가 뭘 잘못하고 있는지 알려주세요. 액세스 할 때 :

http://test.softwaredesignexcellence.com/WebPostService/WebPostSvc.svc/json/Test?testtext=test%20me

을 나는 텍스트 "서비스"를 알리는 작은 텍스트의 서브 헤더 대담한 헤더 페이지를 얻고있다 "발견되지 엔드 포인트를.". 왜이 메시지가 나타 납니까? 동일한 서비스가 쿼리 문자열 "http : //localhost/Services/WebPostSvc.svc/json/Test? testtext = test % 20me"을 사용하여 로컬 호스트에서 작동합니다. 그것은 약간 다른 응답을주고 내부이기 때문에,

<string>Echoing test me</string> 

프로덕션 서버, 난에 대한 링크를 넣지 수 있지만, 그것은 여전히 ​​잘 작동하고 : 나는 반응을 얻고있다

<string xmlns="http://schemas.microsoft.com/2003/10/Serialization/">Echoing test me</string> 

로컬로 게시 할 때 로컬 웹 서버에 충돌하면 모든 것이 효과적입니다. 게시 된 폴더를 프로덕션 서버에 복사하고 해당 서버에 비슷한 URL을 입력하면 모든 것이 작동하고 동일한 코드와 동일한 설정이 테스트 서버에 보내지고 위에 나열된 오류 (종점 찾을 수 없습니다.). 테스트 서버에서 간단한 서비스를 실행하지 못하게하는 것이 무엇인지 이해하지 못합니까? 웹 서비스

인터페이스 :

[ServiceContract(Namespace="http://services.alorica.com/WebPostSvc/1.0")] 
    public interface IWebPostSvc 
    { 
     [OperationContract] 
     [WebGet] 
     string Test(string testtext); 
    } 

이 내가 작업을 얻기 위해 노력하고 간단한 방법이다 : 나는 바이올린을 켜는 된대로

[WebService(Namespace = "http://services.alorica.com/WebPostSvc/1.0")] 
    [ServiceBehavior(Namespace = "http://services.alorica.com/WebPostSvc/1.0")] 
    public class WebPostSvc : IWebPostSvc 
    { 
     public string Test(string testtext) 
     { 
      return String.Format("Echoing {0}", testtext); 
     } 
    } 

내 설정

는 unweildy지고있다 그들 모두가 작동하도록 노력하고 있습니다. 업데이트 - serviceHostingEnvironment 섹션을 제거했습니다. 웹 서비스가 아직 작동 중이며 SOAP로 작업하고 있지만 json이 여전히 "엔드 포인트를 찾을 수 없습니다"라는 정보를 제공하고 있습니다. WebGet이에 UriTemplate을 추가 할 수

<system.serviceModel> 

    <!-- Set up Custom Behaviors --> 
    <behaviors> 

     <endpointBehaviors> 
     <behavior name="jsonBehavior"> 
      <webHttp/> 

     </behavior> 
     </endpointBehaviors> 


     <serviceBehaviors> 
     <behavior name="SvcMetaBehavior" > 
      <serviceMetadata httpGetEnabled="true" /> 
      <serviceDebug includeExceptionDetailInFaults="false" /> 
     </behavior> 
     </serviceBehaviors> 

    </behaviors> 


    <!-- Set up the binding configuration --> 
    <bindings> 

     <basicHttpBinding> 
     <binding name="SOAPBinding"> 
      <security mode="None"> 

      </security> 
     </binding> 
     </basicHttpBinding> 

     <webHttpBinding> 
     <binding name="JSONBinding" 
       hostNameComparisonMode="StrongWildcard" 
       receiveTimeout="00:10:00" 
       sendTimeout="00:10:00" 
       openTimeout="00:10:00" 
       closeTimeout="00:10:00" 
       maxReceivedMessageSize="1000000" 
       maxBufferPoolSize="2000000" 
       bypassProxyOnLocal="false" 
       useDefaultWebProxy="true" > 
      <security mode="None"> 

      </security> 
     </binding> 
     </webHttpBinding> 


    </bindings> 

    <services> 

     <!-- --> 
     <service behaviorConfiguration="SvcMetaBehavior" 
       name="WebPostService.WebPostSvc" 
     > 

     <endpoint address="soap" 
        binding="basicHttpBinding" 
        bindingConfiguration="SOAPBinding" 
        contract="WebPostService.IWebPostSvc" 
     /> 

     <endpoint address="json" 
        binding="webHttpBinding" 
        bindingConfiguration="JSONBinding" 
        behaviorConfiguration="jsonBehavior" 
        contract="WebPostService.IWebPostSvc" 

     /> 

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

     </service> 

    </services> 

    </system.serviceModel> 

답변

0

감사합니다. 나는 나의 특정한 문제점을 발견했다, 내가 생각했던 것처럼 그것은 구성에 없었다.

게시하려는 서버에 .NET 3.5가 설치되어 있지 않아 .NET 2.0으로 충분하지만 어셈블리가 누락되어 잘 작동합니다. 나는 왜 내가 더 좋은 에러 메시지를 얻지 못했는지 모르겠다.하지만 해결책은 내 참조를 살펴보고 "로컬 복사"로 바꾸고 재 게시를 한 다음 그 서버에서 모든 것이 작동하고 있었다. 나는 좌지에서 모든 참조에 대해 "로컬 복사"를 수행했지만, .NET 2.0 프레임 워크에 포함되지 않은 참조에만이 작업을 수행해야한다고 확신합니다.

1

서비스에 엔드 포인트에 정의 된 호스트가 없습니다.

<services> 
    <service name="WebPostService.WebPostSvc"> 
    <endpoint address="" binding="basicHttpBinding" bindingConfiguration="SOAPBinding" name="serviceBasicHttpBinding" contract="WebPostService.IWebPostSvc"> 
     <identity> 
     <dns value="localhost" /> 
     </identity> 
    </endpoint> 
    <host> 
     <baseAddresses> 
     <add baseAddress="http://test.softwaredesignexcellence.com" /> 
     </baseAddresses> 
    </host> 
    </service> 
    </services> 
+0

당신은 서비스가 기존 엔드 포인트의 정의 된'host' 속성이없는 건가요? –

+0

3 개의 enpoint가 정의되어 있습니다. 바인딩과 행동 구성 후 끝으로 – stephenbayer

+0

죄송합니다, 호스트 – Slick86

관련 문제