AJAX не работает в ASP.NET - PullRequest
       20

AJAX не работает в ASP.NET

1 голос
/ 12 января 2012

У меня на компьютере установлены .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 Ответ

1 голос
/ 12 января 2012

Вы можете устранить проблему ограничений isapi и cgi, открыв IIS Manager, выбрав сервер и дважды щелкнув значок ISAPI и CGI Restrictions (при условии, что win 7 или win server 2008).

ВВ появившемся окне щелкните правой кнопкой мыши каждую запись для ASP.NET v2.0.50727 (при условии, что 64-разрядная ОС; будет только одна в 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.

...