PUT 요청을 수락하기 위해 ASP.Net 3.5 프로젝트에서 WebService를 가져올 수 없습니다. MyService.asmx에서ASP.Net 3.5 WebService에서 AJAX PUT 요청을 수락하는 방법은 무엇입니까?
var url = '/MyService.asmx/UpdateObject';
var options = {
dataType: "json",
contentType: "application/json",
cache: false,
type: "PUT",
data: data ? ko.toJSON(data) : null
};
$.ajax(url, options);
, 나는 다음과 같습니다 :
[WebMethod(EnableSession = true)]
[System.Web.Script.Services.ScriptMethod(ResponseFormat = System.Web.Script.Services.ResponseFormat.Json, UseHttpGet=true)]
public ButDto UpdateObject(ObjectDto myObject)
{
//Do some stuff here
return myObject;
}
그러나, 나는 다음과 같은 오류 메시지가 점점 오전 :
을 여기
는 AJAX 호출입니다 POST 요청을 사용하여 UpdateObject 메소드를 호출하려는 시도가 허용되지 않았습니다.시도는 메서드를 호출하려고했습니다 : 내 웹 서비스 선언에서 "UseHttpGet = true"를 제거하고 내가 같은 아약스 호출을 수행 할 경우
, 나는 다음과 같은 오류 메시지가 무엇입니까 GET 요청을 사용하는 UpdateObject는 허용되지 않습니다.
그래서 나는 여기서 약간 당황하고 있습니다.
UPDATE는 :
또한 데이터 유형 시도 : "텍스트",하지만 결과는 동일했다.
정보 및 좋은 조언을 해주신 Steven에게 감사드립니다! POST를 사용하여 엔티티를 업데이트 할 수 있다고 생각합니다. 그러나 필자가 읽은 바에 따르면 엔티티와 PUT을 생성하기 위해 POST를 사용해야합니다. Microsoft의 ScriptMethod가 PUT 및 DELETE 요청을 허용하지 않는 것은 부끄러운 일입니다. PUT 요청을 받아 들일 ASP.Net 3.5 웹 서비스를 작성하는 또 다른 방법이 있습니까? –
@ Jean-FrançoisBeauchamp RESTful 설정에서는 완전히 정확합니다. PUT은 엔티티를 바꾸거나 업데이트하는 것입니다. 나는 POST 요청으로 엔티티를 생성/업데이트하는 것이 허용 가능하다고 생각한다. PUT을 수락하려면 웹 서비스 외부에 무언가를 써야한다고 생각합니다. 일반적인 핸들러일까요? 그러나 그 경로를 따라 간다면 웹 서비스가 제공하는 자동 직렬화 및 매핑 중 일부가 손실 될 수 있습니다. –
답장을 보내 주셔서 감사합니다. 마지막으로 삽입, 업데이트 및 삭제와 관련된 모든 것에 POST를 사용했습니다. –