2015-01-27 3 views
1

HttpHandler를 사용하는 SharePoint 2010에서 사이트를 실행하고 있습니다. 사이트가 시작되면 모든 것이 올바르게 실행됩니다.HttpHandler는 SharePoint 2010에서 403을 반환합니다.

잠시 후 HttpHandler가 403 (금지됨)을 반환하기 시작합니다.

응용 프로그램 풀을 수동으로 recyling하면 문제가 일시적으로 수정되지만 약 일 후에 (사이트에로드되는 양에 따라 다름) 반환됩니다.

재미있는 점은 문제가 HttpHandlers (내 사용자 지정 처리기와 SharePoint 자체 HttpHandlers 모두)에 영향을 미치는 것 같습니다. aspx 페이지는 제대로 작동합니다.

<system.web> 
    <httpHandlers> 
     <add verb="*" path="*.ajax" type="LI_BR.UserControls.web.ajax.AjaxHttpHandler" validate="false" /> 
    </httpHandlers> 
    </system.web> 

    <system.webServer> 
    <handlers> 
     <add name="AjaxHandler" path="*.ajax" verb="*" type="LI_BR.UserControls.web.ajax.AjaxHttpHandler" resourceType="Unspecified" preCondition="integratedMode" /> 
    </handlers> 
    </system.webServer> 

는 IIS 로그를 확인, 나는이 발견했습니다 :

의 HttpHandler는 다음과 같이 구성되어

HttpHandler를 성공적으로 호출이 (그냥 실제로 가끔 작동하는지 증명)

2015-01-23 06:41:42 192.168.0.XX POST /Registration/SysFelt.ajax WorkerID=12&FeltID=1796&TabelID=&ObjektID=0 20113 DOMAIN\USER 192.168.0.XX Mozilla/4.0+(compatible;+MSIE+7.0;+Windows+NT+6.1;+WOW64;+Trident/7.0;+SLCC2;+.NET+CLR+2.0.50727;+.NET4.0C;+.NET4.0E;+.NET+CLR+3.5.30729;+.NET+CLR+3.0.30729;+InfoPath.2) 200 0 0 31 

A는 요청

2015-01-26 03:32:16 192.168.0.XX POST /Registration/SysFelt.ajax WorkerID=12&FeltID=1796&TabelID=&ObjektID=0 20113 DOMAIN\USER 192.168.0.XX Mozilla/4.0+(compatible;+MSIE+7.0;+Windows+NT+6.1;+WOW64;+Trident/7.0;+SLCC2;+.NET+CLR+2.0.50727;+.NET4.0C;+.NET4.0E;+.NET+CLR+3.5.30729;+.NET+CLR+3.0.30729;+InfoPath.2) 403 0 0 5662 
실패

403이 시작될 때의 패턴을 찾으려고 시도했지만, 내가 알 수있는 한, 재활용 후 첫 번째 요청이 HttpHandler에있는 경우에 발생합니다. 이것은 단지 이론 일 뿐이므로이 패턴의 로그에서 그 다음에는 아무것도 표시되지 않습니다. 어떤 HttpHandler를에 대한 첫 번째 실패한 요청 (심지어는 다른 사용자의 경우) 모든 단일 요청 후이 패턴을 나타냅니다 로그에서

(403)와 동일한

스 니펫 반환

#Software: Microsoft Internet Information Services 7.5 
#Version: 1.0 
#Date: 2015-01-26 03:32:16 
#Fields: date time s-ip cs-method cs-uri-stem cs-uri-query s-port cs-username c-ip cs(User-Agent) sc-status sc-substatus sc-win32-status time-taken 
2015-01-26 03:32:16 192.168.0.XX POST /time/SysFelt.ajax WorkerID=12&FeltID=1796&TabelID=&ObjektID=0 20113 DOMAIN\USER 192.168.0.XX Mozilla/4.0+(compatible;+MSIE+7.0;+Windows+NT+6.1;+WOW64;+Trident/7.0;+SLCC2;+.NET+CLR+2.0.50727;+.NET4.0C;+.NET4.0E;+.NET+CLR+3.5.30729;+.NET+CLR+3.0.30729;+InfoPath.2) 403 0 0 5662 

또는 (자매 사이트에서 -

#Software: Microsoft Internet Information Services 7.5 
#Version: 1.0 
#Date: 2015-01-27 06:30:10 
#Fields: date time s-ip cs-method cs-uri-stem cs-uri-query s-port cs-username c-ip cs(User-Agent) sc-status sc-substatus sc-win32-status time-taken 
2015-01-27 06:30:10 192.168.0.XX POST /time/SysFelt.ajax WorkerID=12&FeltID=1796&TabelID=&ObjektID=0 20114 - 192.168.0.63 Mozilla/4.0+(compatible;+MSIE+7.0;+Windows+NT+6.1;+WOW64;+Trident/7.0;+SLCC2;+.NET+CLR+2.0.50727;+.NET4.0C;+.NET4.0E;+.NET+CLR+3.5.30729;+.NET+CLR+3.0.30729;+InfoPath.2) 401 1 2148074254 5849 
2015-01-27 06:30:10 192.168.0.XX POST /time/SysFelt.ajax WorkerID=12&FeltID=1796&TabelID=&ObjektID=0 20114 DOMAIN\USER 192.168.0.XX Mozilla/4.0+(compatible;+MSIE+7.0;+Windows+NT+6.1;+WOW64;+Trident/7.0;+SLCC2;+.NET+CLR+2.0.50727;+.NET4.0C;+.NET4.0E;+.NET+CLR+3.5.30729;+.NET+CLR+3.0.30729;+InfoPath.2) 403 0 0 748 

참고 : 마지막 부분 인 IP 및 도메인/사용자 이름이 로그 조각에서 편집되었습니다. 모든 로그 항목은 동일한 사용자를 대상으로합니다.

참고 : 로그의 타임 스탬프는 1 시간 씩 꺼져 있습니다 (로그에서 09:00은 08:00이됩니다).

HttpHandler를 현재 내가 true로 IsReusable을 변경 시도

public class AjaxHttpHandler : IHttpHandler, IRequiresSessionState 
{ 
    public bool IsReusable { get { return false; } 
} 

사용하고 IRequiresSessionState를 제거하는, 그래서 어떤 차이가 있는지 - 그것은하지 않는 것 같습니다.

왜이 문제가 발생하는지 파악할 수 없으며 해결 방법에 대한 아이디어가 부족합니다.

답변

0

다른 누구든지이 문제에 부딪 힐 경우 여기에 해결책을 게시 해 드리겠습니다.

나는 오류가 발생한 이유를 결코 알지 못했지만 해결 방법을 찾은 것 같습니다. 이 문제를 해결하기위한 방법은 오류가 발생했다는 나의 이론과 밀접한 관련이 있습니다. 왜냐하면 재활용 후 첫 번째 호출은 HttpHandler 때문이었습니다.

솔루션은 간단하지만 전혀 예쁘지 않습니다. HttpHandler를 호출 할 수있는 페이지에 JavaScript를 삽입했습니다. 스크립트는 20 분 후에 HttpHandler가 호출되지 않는 페이지로 리디렉션됩니다 (내 경우에는 첫 페이지). 즉, 재활용 이후의 첫 번째 요청은 항상 aspx 페이지에 대한 것이 었습니다. 그 후에 HttpHandler를 포함한 모든 것이 정상적으로 작동했습니다.