2012-01-12 10 views
1

내 컴퓨터에 .NET 4.0 및 .NET 2.0이 설치되어 있습니다. 비동기 적으로 트리거 된 타이머 틱 기능을 사용하여 AJAX.NET 응용 프로그램을 실행하고 페이지를 다시로드하는 중입니다. 즉 비동기 포스트 백이 작동하지 않습니다. 나는 Classic .NET 4.0 내 응용 프로그램 풀을 변경 시도와 나는 오류AJAX가 ASP.NET에서 작동하지 않습니다.

HTTP Error 404.2 - Not Found 
The page you are requesting cannot be served because of the ISAPI and CGI Restriction list settings on the Web server. 

을 얻고 내가 Classic .NET 2.0 페이지 내 응용 프로그램 풀을 변경할 때 표시되고 있지만, 타이머 간격에 postback'd된다.

아무것도 더 많은 것이 내 Web.Config 파일

<configuration> 
    <system.web> 
    <pages enableEventValidation="false" enableViewState="false" enableViewStateMac="false"> 
     <controls> 
     <add tagPrefix="asp" namespace="System.Web.UI" assembly="System.Web.Extensions, Version=1.0.61025.0, Culture=neutral, PublicKeyToken=31BF3856AD364E35" /> 
     <add tagPrefix="asp" namespace="System.Web.UI.WebControls" assembly="System.Web.Extensions, Version=1.0.61025.0, Culture=neutral, PublicKeyToken=31BF3856AD364E35"/> 
     </controls> 
    </pages> 
     <httpRuntime maxRequestLength="32768" executionTimeout="3600"/> 
    <httpHandlers> 
     <add verb="GET,HEAD" path="ScriptResource.axd" type="System.Web.Handlers.ScriptResourceHandler, System.Web.Extensions, Version=1.0.61025.0, Culture=neutral, PublicKeyToken=31BF3856AD364E35" validate="false"/> 
    </httpHandlers> 
    <httpModules> 
     <add name="ScriptModule" type="System.Web.Handlers.ScriptModule, System.Web.Extensions, Version=1.0.61025.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35"/> 
    </httpModules> 
    <compilation defaultLanguage="c#" debug="false"> 
     <assemblies> 
     <add assembly="System.Web.Extensions, Version=1.0.61025.0, Culture=neutral, PublicKeyToken=31BF3856AD364E35"/> 
     </assemblies> 
    </compilation> 
    </system.web> 
</configuration> 

에 추가해야 내 AJAX.NET 코드가

 <asp:ScriptManager ID="ScriptManager1" runat="server" EnablePartialRendering="true" /> 
     <asp:Timer ID="Timer1" runat="server" Interval="200" ontick="Timer1_Tick" /> 
     <asp:UpdatePanel ID="UpdatePanel1" runat="server" UpdateMode="Conditional"> 
     <ContentTemplate> 
     </ContentTemplate> 
     <Triggers> 
      <asp:AsyncPostBackTrigger ControlID="Timer1" EventName="Tick" /> 
     </Triggers> 
     </asp:UpdatePanel> 

답변

1

당신은 IIS를 열어 ISAPI 및 CGI 제한 문제를 해결할 수 있습니다 관리자를 선택하고 서버를 선택한 다음 ISAPI 및 CGI 제한 아이콘 (win 7 또는 win server 2008로 가정)을 두 번 클릭합니다.

ASP.NET v2.0.50727 (64 비트 OS라고 가정하고 32 비트에만 해당)에 대한 각 항목을 마우스 오른쪽 단추로 클릭하고 Edit...을 선택하고 Allow extension path to execute 확인란을 선택하십시오.

이렇게하면 ASP.Net 2.0 응용 프로그램을 실행할 수 있습니다.

지금까지 다시 페이지에 게시이 가장 좋은 제안이 별도의 업데이트 패널에서 래핑하는 것입니다 같이

<asp:UpdatePanel runat="server" UpdateMode="Conditional" ChildrenAsTriggers="false" 
    ID="upTimer"> 
    <ContentTemplate> 
     <asp:Timer ID="Timer1" runat="server" Interval="2000" ontick="Timer1_Tick" /> 
    </ContentTemplate> 
</asp:UpdatePanel> 

당신은 또한 당신이 절대적으로 필요하지 않는 한 200 밀리 초에서 타이머 간격을 증가 고려할 수 있습니다 자주 (2 초가되도록 수정했습니다).

확인해야 할 또 다른 설정이 있습니다.이 응용 프로그램을 .Net 1.1 응용 프로그램에서 마이그레이션 한 경우 <xhtmlConformance mode="Legacy" /> 태그가 web.config에 남아있을 수 있습니다.

이 경우 Microsoft의 as reported by Scott Guthrie이라는이 문제가 발생할 수 있습니다.

+0

답장을 보내 주셔서 감사합니다. 미안하지만 불완전합니다. AJAX.NET 타이머 틱 문제에 큰 문제가 있습니다. 이 작업을 마친 후에도 2 초마다 정지 페이지가 다시로드됩니다. –

+0

왜 그런지 (조금 더 보일 것입니다) 잘 모르겠지만 타이머 간격을 변경하는 것이 좋습니다. 지금은 200 밀리 초로 설정되어있어 페이지 혼동을 일으킬 수 있습니다. –

+0

포스트 백 문제에 대한 가능한 해결 방법으로 대답을 업데이트했습니다. –