2011-09-21 4 views
0

내 WCF 서비스를 정의하는 인터페이스가 아래에 있습니다. 때로는 'parameters'매개 변수가 호출 될 때 null입니다. 다른 시간은 그렇지 않습니다.

$.ajax(
{ 
    type: "POST", 
    cache: false, 
    contentType: "application/json", 
    url: serviceCallUrl, 
    data: JSON.stringify(params), 
    success: callbackHandler 
}); 

결과 : 여기

[ServiceContract] 
public interface IContactRelationshipManager 
{ 
    [OperationContract] 
    [WebInvoke(
    Method = "POST", 
    ResponseFormat = WebMessageFormat.Json, 
    RequestFormat = WebMessageFormat.Json, 
    BodyStyle = WebMessageBodyStyle.Wrapped)] 
    void SaveActivityLogEntry(SaveActivityLogEntryParameters parameters); 
} 

<behaviors> 
    <endpointBehaviors> 
    <behavior name="jsonBehavior"> 
     <webHttp /> 
    </behavior> 
    </endpointBehaviors> 
    <serviceBehaviors> 
    <behavior name="ContactRelationshipManagerBehavior"> 
     <serviceMetadata httpGetEnabled="true" /> 
     <serviceDebug includeExceptionDetailInFaults="true" /> 
    </behavior> 
    </serviceBehaviors> 
</behaviors> 

여기 내 자바 스크립트 호출 인의 app.config 내 행동 섹션 (I Windows 서비스로이를 실행하는거야)입니다 JSON.stringify(params)

"{"매개 변수 ": {"ContactEmailAddress ":"[email protected] ","LiasonsForContact ": [25] 1, "MethodFK": 3, "Description": "tt", "ContactFK": 32} "ActivityLogEntry": { "Date": "/ Date (1316634966273) /", "LiasonFK" }} "

내가 실제로 여기에서 잘못하고있는 것이 있습니까? 이것은 크롬과 파이어 폭스에서 항상 잘 작동합니다. 또한 서비스를 디버깅하는 동안 Fiddler를 사용하여 이것을 테스트했으며 Fiddler가 열려있을 때 매개 변수가 null로 되돌아 왔습니다.

답변

1

나는 내 함수를 매개 변수로 스트림을 복용하고 JSON.NET와 함수 내에서 그것을 직렬화를 포함하여 작업을 얻기 위해 다른 기술의 무리와 함께 연주 끝났다. 그것도 작동하지 않았다. 나는 이것이 결국 NTLM 문제라고 믿게하는이 question을 발견했습니다. 내 웹 사이트는 IIS7에서 Windows 인증을 사용하며 Windows 서비스로 호스팅되는 WCF 서비스를 호출합니다. 내가 피들러를 사용하는 경우이 모든 일을하는 것은 Internet Explorer에서 잘 작동 후

<binding name="webBinding"> 
    <security mode="TransportCredentialOnly"> 
    <transport clientCredentialType="Windows" proxyCredentialType="None" 
     realm="" /> 
    </security> 
</binding> 

다음 내 WCF 서비스가 매개 변수를 수신
0

예를 들어 피들러를 사용하여 실제로 보내지는 것을 스니핑 할 수 있습니까? 일반적으로 데이터 객체를 $.ajax에 직접 전달하고 객체 직렬화를 처리하도록합니다. 문자열 화 된 JSON이 부적절하게 인코딩되었다고 추측합니다.

+0

문제가되는 : 서버 측에 나는 같은 것으로 내으로 WebHttpBinding의 보안 변경 바르게. Fiddler를 사용하여 결과에 영향을주기 때문에 테스트 할 수 없습니다. – skeletank

0

저는 실제로 문제가 없었습니다. 아약스 호출에서 누락 된 몇 가지 속성을 제외한 모든 필수 구성이 있습니다. 이것이 도움이 될지 모르겠습니다.

contentType: "application/json; charset=utf-8" 
dataType: "json" 
processData: false 
관련 문제