簡體   English   中英

AJAX在ASP.NET中不起作用

[英]AJAX not working in ASP.NET

我在計算機上安裝了.NET 4.0和.NET 2.0,我嘗試運行具有異步觸發的計時器刻度線功能的AJAX.NET應用程序,並且頁面正在重新加載(即,Asynchronouspostback無法正常工作)。 我嘗試將我的應用程序池更改為Classic .NET 4.0 ,但出現錯誤

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頁面正在顯示,但會按計時器間隔回發。

還有什么我應該添加到我的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>

您可以通過以下方式解決isapi和cgi限制問題:打開IIS管理器,選擇服務器,然后雙擊“ 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應用程序遷移了此應用程序,則您的web.config中可能會<xhtmlConformance mode="Legacy" />標記。

如果是這樣的話,這將絕對會導致此問題, 正如 Microsoft名望的Scott Guthrie所報告的那樣

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM