2014-09-15 2 views
0

디버거를 통해 로컬 컴퓨터에서 작동하고 IIS에서 서비스로 설치된 WCF 웹 서비스가 있습니다.GoDaddy에서 호스팅되는 웹 서비스가 실패합니다.

GoDaddy 호스트에 설치할 때이 웹 서비스가 실패합니다. 함수 시작 부분의 로깅 호출은 실행되지 않고 브라우저는 400/잘못된 요청 응답을받습니다.

다른 서비스도 예상대로이 작업과 함께 컴파일되므로 연결 문자열, web.config 등의 문제가 아닙니다.

http://tucansdev.com/TalLimoService.svc/GetTransportationOffers/1,2,1410885561,false 

동작 계약은 다음과 같습니다 : 서비스를 호출 할 수

URL은 간단한 "GET"호출입니다

[OperationContract] 
[WebInvoke(Method = "GET", 
    ResponseFormat = WebMessageFormat.Json, 
    BodyStyle = WebMessageBodyStyle.Wrapped, 
    UriTemplate = "GetTransportationOffers/{pickupLocID},{dropoffLocID},{pickupTime},{isAsInstructed}")] 
List<GetTransportationOffersResult> GetTransportationOffers(string pickupLocID, string dropoffLocID, string pickupTime, string isAsInstructed); 

는 GoDaddy와 서버의 로그가 사실을 확인하는 그 전화는 받았지만 그 이상은 없었다. 그것이 작동하는 데 사용

<system.serviceModel> 
<services> 
    <service name="TalLimoService.TalLimoService" behaviorConfiguration="ServiceBehavior"> 
    <!--Service Endpoints--> 
    <!-- Unless fully qualified, address is relative to base address supplied above--> 
    <endpoint address="" binding="webHttpBinding" contract="TalLimoService.ITalLimoService" behaviorConfiguration="web"/> 
    </service> 
</services> 
<behaviors> 
    <serviceBehaviors> 
    <behavior name="ServiceBehavior"> 
     <!-- To avoid disclosing metadata information, set the values below to false before deployment --> 
     <serviceMetadata httpGetEnabled="true" httpsGetEnabled="true"/> 
     <!-- To receive exception details in faults for debugging purposes, set the value below to true. Set to false before deployment to avoid disclosing exception information --> 
     <serviceDebug includeExceptionDetailInFaults="false"/> 
    </behavior> 
    </serviceBehaviors> 
    <endpointBehaviors> 
    <behavior name="web"> 
     <webHttp/> 
    </behavior> 
    </endpointBehaviors> 
</behaviors> 
<protocolMapping> 
    <add binding="basicHttpsBinding" scheme="https"/> 
</protocolMapping> 
<serviceHostingEnvironment aspNetCompatibilityEnabled="false" multipleSiteBindingsEnabled="true"/> 

나쁜 아직 :

그냥 철저한 것으로, 여기의 Web.config에서 내 서비스 모델이다. 3 번째 매개 변수를 명시적인 날짜에서 시간 틱으로 변경 했으므로 인터페이스에 영향을 미치지 않습니다. 이전 버전으로 되돌릴 때 나는 여전히 400 응답을 얻었으므로 코드와 같지 않습니다. 이게 뭐야? 그것이 작동하는 데 사용하기 때문에

NEXT STEP

, 나는 그때 아무 문제가 없었다 완전히 사소한 인터페이스에 코드를 단순화. 그런 다음 모든 매개 변수를 끝점에 복원했지만 빈 함수가 있습니다. 과 같이 보이는 기능의 처음 두 행 : 함수는 첫 번째 라인이있는 경우, 모든 것이 괜찮

List<GetTransportationOffersResult> transList = new List<GetTransportationOffersResult>(); 
    TalLimoDataDataContext tlData = new TalLimoDataDataContext(); 

. 두 번째 줄은 서비스가 Error 400을 반환하도록합니다. 나는 .dbml 파일에 문제가 있다고 말할 것입니다. 그러나이 웹 서비스의 다른 함수들은 동일한 호출을하고 아무런 문제가 없습니다!

+0

당신은 서비스 제공자에게 연락하여 호스팅 도메인상의 어떤 것이 바뀌 었는지 확인해 보았습니다. basicHttpsBinding에 문제가 있다면, 이것을 복제하거나 복제하기 위해 로컬로 디버깅 할 수 있습니까? – MethodMan

답변

0

문제는 결국 web.config 파일에있는 것으로 나타났습니다.

<connectionStrings> 
    <add name="DataSourceConnectionString"... 

및 서버에, 어떤 이유로, 그것은

<connectionStrings> 
    <add name="TalLimoConnectionString"... 

그래서 내 컴퓨터에 일했다, 그리고 서버에하지 않았다 : 내 컴퓨터에 나는 있었다. 나는이 이야기의 도덕이 결코 아무 것도 가정하지 않는다고 생각한다.

관련 문제