[英]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.