예상되는 형식으로 PUT 요청을 WCF로 보내는 데 어려움을 겪고 있습니다. QueryString을 사용하여 GET과 같이 보낼 수 있다고 생각했지만 오류가 다시 발생했습니다. WCF PUT 요청의 올바른 형식은 무엇입니까?
//Put operation
[OperationContract]
[WebInvoke(UriTemplate = "?tid={transcriptId}&qId={quizId}&cid={choice}&mid={mbox}&status={status}", Method = "PUT", RequestFormat=WebMessageFormat.Json)]
vTranscript UpdateTranscript(string transcriptId, string quizId, string choice, string mbox, string status);
는 또한 XML과 CURL을 사용하여 JSON 파일로 전송했는데,이 파일의 값은 서비스에 의해 포착되지 않은 (값이 null이었다).
[DataContract]
public class vTranscript
{
[DataMember]
public bool validUser;
[DataMember]
public bool correctAnswer;
[DataMember]
public bool recorded;
}
내 vTranscript가하는 있으리라 믿고있어 나는 심지어 시도했지만되지, 나는에 전달하는 매개 변수와 일치해야합니다.
내가 잘못하고있는 것이 확실하지 않습니다. 어떤 제안이라도 대단히 감사하겠습니다. 고맙습니다. (게시 된 이름이 메서드 매개 변수의 이름과 일치해야합니다)
//Put operation
[OperationContract]
[WebInvoke(Method = "PUT", RequestFormat=WebMessageFormat.Json)]
vTranscript UpdateTranscript(string transcriptId, string quizId, string choice, string mbox, string status);
UriTemplate은 URL 자체에 포함 된 매개 변수를 정의 할 수 있습니다 :
도움 주셔서 감사합니다. 그게 효과가 있지만, 이제는 "405 Method Not Allowed"가 표시됩니다. 이 오류 메시지에 대한 구글 때 가능한 많은 원인이있는 것 같다. VS2010 내에서 모든 것을 실행 중이므로 계속 볼 수있는 교차 도메인 문제와 관련이 있는지 의심 스럽습니다. – Trebor
PUT 및 DELETE 동사는 기본적으로 비활성화되어 있습니다. 이 스레드 (http://stackoverflow.com/a/10907343/2711582)는이를 활성화하는 방법에 대한 정보를 제공합니다. 클라이언트 측의 해결 방법은 POST를 수행하고 X-HTTP-Method-Override 헤더를 추가하여 실제 동사를 지정하는 것입니다. – wdosanjos
이 작업을 좀 더 수행 한 후에이 문제를 해결할 수있었습니다. 내 JSON을 JSON 배열로 포장하고 있었으며 단순한 JSON 문자열로 포장하지 않았습니다. 도와 줘서 고마워. – Trebor