AJAX不在ASP.NET中工作

时间:2012-01-12 17:23:53

标签: .net ajax.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>

1 个答案:

答案 0 :(得分:1)

您可以通过打开IIS管理器,选择服务器,然后双击ISAPI和CGI限制图标(假设win 7或win server 2008)来解决isapi和cgi限制问题。

在结果屏幕中,右键单击ASP.NET v2.0.50727的每个条目(假设为64位操作系统;仅为32位中的一个),选择Edit...并检查{{1复选框。

这应该允许ASP.Net 2.0应用程序运行。

就页面回发而言,最好的建议是将其包装在单独的更新面板中:

Allow extension path to execute

您可能还需要考虑将计时器间隔从200毫秒增加,除非您经常需要它(我已将其修改为2秒)。

还有另外一个要检查的设置:如果您从.Net 1.1应用程序迁移此应用程序,则可能在web.config中遗留了<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> 标记。

如果是这种情况,这绝对会导致这个问题,as reported by Scott Guthrie的微软名声。