2011-02-08 4 views
3

AJAX 문제에 대한 도움이 필요합니다.AJAX가 HttpModule 때문에 깨져서 어떻게 막을 수 있습니까?

비동기 처리를 위해 AJAX를 사용하는 ASPX 페이지에 특정 컨트롤이 있습니다.

또한 특정 사이트에 대한 HttpModule이 있는데,이 사이트는 HttpRequest를 가로 채고 필터링합니다.

모듈을 설치 한 후 AJAX 컨트롤이 손상되었습니다. 이러한 컨트롤은 AJAX Post에서 반환되지 않는 것 같습니다. 이것과 함께 HttpModule 코드 :

public void Init(HttpApplication context) 
{ 
    context.ReleaseRequestState += new EventHandler(InstallResponseFilter); 
} 

public void Dispose() 
{ 
} 

private void InstallResponseFilter(object sender, EventArgs e) 
{ 
    HttpResponse response = HttpContext.Current.Response; 

    if (response.ContentType == "text/html") 
    { 
     response.Filter = new MyFilter(response.Filter); 
    }   
} 

어떤 아이디어? 감사합니다.

답변

1

아마도 귀하의 아약스 응답은 "text/html"콘텐츠 유형을 사용하고 있습니까? 이 경우에 디버깅을 시도 했습니까?

그렇다면 "application/json"또는 "text/xml"다른 것으로 전환하여 작동하는지 확인하십시오. 응용 프로그램이 컨텐츠 유형 등록 정보를 사용하는 다른 용도에 따라 다릅니다.

아약스 응답에서이 콘텐츠 유형을 사용하지 않으면이 모듈이 문제를 일으키지 않는 것으로 보입니다. 다시 무슨 일이 일어나는지 정확하게 확인하기 위해 디버그해야합니다.

또한 InstallResponseFilter 메서드에 추가 조건을 추가 할 수도 있습니다. 예를 들어 jquery의 모든 Ajax 요청에 특정 헤더가 있습니다 (x-requested-with). 다른 프레임 워크에서도 마찬가지입니다. Ajax의 공통 서명을 식별 할 수 있으면 응답 필터를 필터링하십시오.

+0

제임스 감사합니다. 제가 현재 시도하고있는 것은 ScriptManager가 페이지에 실제로로드 된 동일한 HttpModule을 사용하는 것입니다 : http://www.codeguru.com/csharp/.net/net_asp/tutorials/article.php/c12927/ AJAX-Extender-ASPNET-Controls.htm을 사용하여 자동으로 연결하는 Control-Adapters - 작동 여부를 알려드립니다. – Fox

관련 문제