2009-02-10 11 views
0

우리는 URL 재 작성을 위해 global.asax를 사용하는 웹 응용 프로그램을 보유하고 있습니다. 라이브 서버에서 사이트의 컴파일 된 버전을 사용합니다.global.asax가 업데이트되지 않았습니다.

수정 요청의 일부로 javascript가 페이지의 콘텐츠를 업데이트하기 위해 webservice를 호출하는 일부 맞춤 네이티브 AJAX 코드를 추가해야했습니다. 확장자가 .asmx 인 webservice를 호출 할 수 있도록 URL 재 작성 코드를 수정하여 asmx 요청을 별도로 처리했습니다.

이 배열은 로컬 컴퓨터에서 제대로 작동하지만 사이트를 게시하고 라이브 서버에 배포하면 새 코드가 포함되지 않는 것 같습니다. 여전히 ".asmx"확장자를 검사하는 조건을 건너 뛰고 웹 서비스 이름을 페이지 이름으로 간주하여 페이지를 찾을 수없는 예외를 던집니다.

우리는 모든 것을 조사해 보았고 그러한 것들에 대해서도 인터넷 검색을 시도했지만 아무런 도움이되지 못했습니다 .. 무엇이 잘못 될지도 모르는 포인터가 있습니까?

+0

로컬 컴퓨터 란 통합 개발 서버 나 로컬 IIS 서버를 로컬로 의미합니까? – Loki

답변

0

URL 재 작성이 정상적이라고 가정하면 (정상적으로 HttpModule로 구현되지 않습니까?) ASP.NET으로 .asmx 요청을 보내는 프로덕션에서 IIS에 ISAPI 매핑이 있는지 확인합니다.

global.asax에 대한 변경 사항이 다시 적용되지 않았다면 항상 응용 프로그램 풀을 중지하고 c : \ windows \ microsoft.net \ framework [version] \에있는 웹 응용 프로그램 컴파일 비트를 찾으십시오. 임시 asp.net 파일 ... 그리고 jitted 버전을 삭제하십시오. 이전에 변경 사항을 Jitting하는 경우 ASP.NET을 보지 못했습니다.

웹 서비스를 호출하는 페이지 중 하나에서 http 피들러 (IE) 또는 변조 데이터 (FireFox 확장)를 실행하는 것도 고려해 볼 수 있습니다. 페이지에서 웹 서비스를 호출하는 방법을 정확하게 알려주고 호출 된 URL이 올바른지 확인할 수 있습니다.

+0

예, 우리는 그것을 확인했습니다 .. 거기 .. –

+0

또한 .. URL 재 작성은 다른 모든 요청에 ​​대해 잘 작동합니다. 우리는 사이트를 게시 할 때 global.asax가 수정되지 않는다고 생각합니다. 이전 버전의 동일한 것을 사용하고 있습니다. –

+0

httpmodule로 처리를 이동하고 IIS에서 asp.net에 대한 매핑을 세 번 확인합니다 – annakata

0

HttpModules을 추가 할 수있는 machine.config 파일이 있습니다. 나는 또한 당신이 web.config를 통해 그렇게 할 수 있다고 생각합니다.

+0

처리기가 응용 프로그램에 종속되어 있기 때문에 machine.config를 절대 수정하지 않으려 고하지만 web.config를 사용해야합니다. – annakata

0

내가 생각할 수있는 한 가지 이유는 Web.config에서 system.web 섹션의 라우팅 모듈을 구성했을 수도 있지만 system.webServer이 아닐 수도 있습니다 (또는 적어도 뭔가를 잊어 버렸습니다).

<system.webServer> 
    <modules> 
     <remove name="UrlRoutingModule" /> 
     <add name="UrlRoutingModule" type="System.Web.Routing.UrlRoutingModule, e="RoleManager" type="System.Web.Security.RoleManagerModule"/> 
    </modules> 
</system.webServer> 

그것은 다른 모듈 또는 처리기하지만 수 있습니다 :

I에게 전에 비슷한 문제와 해결책은 다음과 같이의 Web.config의 system.webServer 섹션에 다시 추가 모듈 &을 제거하는 것이 었습니다 아이디어는 기본적으로 동일합니다. 먼저 모듈을 "제거"하는 것이 중요합니다.

관련 문제