IIS에서 ASP.NET MVC에 대해 HTTP PUT 및 DELETE를 활성화하려면 어떻게합니까?
HTTP PUT
와 DELETE
ASP.NET MVC3 응용 프로그램을 사용합니다. 로컬에서 실행하면 모든 것이 올바르게 작동합니다. 그러나 응용 프로그램을 서버에 게시하면 이러한 방법이 작동하지 않습니다.
웹 서버에서 지원 PUT
및 DELETE
요청 을 활성화하기위한 특별한 설정이 있습니까? IIS 7.5에서 공유 호스팅을 사용하고 있습니다.
최신 정보:
에서 활성화 PUT
하고 DELETE
요청합니다 IIS manager
. PUT
명령이 잘 작동합니다. 그러나 DELETE
여전히 작동하지 않습니다. 요청을 작성합니다 jQuery
.
이 페이지에 있습니다.
http://domain.com/dashboard/edit-site/103323/links/
내 ajax 호출은 다음과 같습니다.
$.ajax({
// url: same as page-url,
cache: false,
type: 'DELETE',
data: { linkid: $(link).data("linkid") },
beforeSend: function () {
// doing something in UI
},
complete: function () {
// doing something in UI
},
success: function (data) {
// doing something in UI
},
error: function () {
// doing something in UI
}
});
이렇게하면 다음과 같은 요청이 생성됩니다.
Accept: */*
Content-Type: application/x-www-form-urlencoded; charset=UTF-8
Origin: http://domain.com
Referer: http://domain.com/dashboard/edit-site/103323/links/
User-Agent: Mozilla/5.0 (Windows NT 6.1) AppleWebKit/537.1 (KHTML, like Gecko) Chrome/21.0.1180.89 Safari/537.1
X-Requested-With: XMLHttpRequest
이것으로 Form Data
:
linkid:104044
IIS 관리자의 처리기 매핑 으로 이동합니다 . 찾아서 두 번 클릭하십시오. 클릭 요청 제한을 ... 버튼 동사 탭에서 모두 추가 하고 .ExtensionlessUrlHandler-Integrated-4.0
DELETE
PUT
편집 : 가능한 WebDav 게시자 문제
2008 서버에서 실행하던 삭제 된 게시물에 대해 언급 한 적이 있습니까? 제거 시도 의 WebDAV 역할을, 또는 귀하의 사이트에서 비활성화 config
:에 system.webServer
-> modules
섹션 제거 WebDAVModule
모듈 :
<system.webServer>
<modules>
<remove name="WebDAVModule" />
</modules>
<handlers>
<remove name="WebDAV" />
</handlers>
</system.webServer>
asp.net 웹 API의 프로덕션 환경에서 다음 오류가 발생 PUT
하거나 DELETE
이러한 방법이 로컬에서 제대로 작동하는 경우.
405-이 페이지에 액세스하는 데 사용되는 http 동사는 허용되지 않습니다.
서버의 web.config에 다음 설정을 추가하기 만하면됩니다.
<system.webServer>
<handlers>
<remove name="WebDAV" />
<remove name="ExtensionlessUrlHandler-Integrated-4.0" />
<remove name="OPTIONSVerbHandler" />
<remove name="TRACEVerbHandler" />
<add name="ExtensionlessUrlHandler-Integrated-4.0" path="*." verb="*" type="System.Web.Handlers.TransferRequestHandler" preCondition="integratedMode,runtimeVersionv4.0" />
</handlers>
<modules>
<remove name="WebDAVModule" />
</modules>
</system.webServer>
원인 : webDAV 모듈은 기본적으로 PUT / DELETE 메서드를 차단합니다. 따라서 먼저이 모듈과 처리기를 제거하십시오. 먼저 기존 ExtensionlessUrlHandler-Integrated-4.0 설정을 제거하고 원하는 path
및 verbs
.
web.config에 다음 코드 줄을 추가하기 만하면됩니다.
<system.webServer>
<security>
<requestFiltering>
<verbs allowUnlisted="false">
<add verb="GET" allowed="true" />
<add verb="POST" allowed="true" />
<add verb="DELETE" allowed="true" />
<add verb="PUT" allowed="true" />
</verbs>
</requestFiltering>
</security>
과
<modules>
<remove name="WebDAVModule" />
</modules>
<handlers>
<remove name="WebDAV" />
</handlers>
마침내 나는 대답이 불안정하다는 것을 알았다. 아래에서 jQuery 호출을 tho로 변경했으며 이제 잘 작동합니다.
$.ajax({
url: this.href + "?linkid=" + $(link).data("linkid"),
cache: false,
type: 'DELETE',
// data: { linkid: $(link).data("linkid") },
beforeSend: function () {
// doing something in UI
},
complete: function () {
// doing something in UI
},
success: function (data) {
// doing something in UI
},
error: function () {
// doing something in UI
}
});
DELETE
전화를 걸 수없는 이유에 대한 설명 이 Form Data
있습니까? 현지에서 잘 작동 했습니까?
'Development Tip' 카테고리의 다른 글
Linux에서 Windows로 scp (0) | 2021.01.10 |
---|---|
Apache POI에서 열 너비 설정 (0) | 2021.01.10 |
jade 템플릿간에 변수를 전달하는 방법 (0) | 2021.01.10 |
Node.js에서 CSV를 JSON으로 변환하는 방법 (0) | 2021.01.10 |
composer bower-asset / jquery를 통해 yii2를 업데이트 할 수 없습니다. 찾을 수 없습니다. (0) | 2021.01.10 |