2012-01-12 4 views
1

У меня установлены .NET 4.0 и .NET 2.0 на моем компьютере. Я попробовал запустить приложение AJAX.NET с функцией асинхронного триггерного таймера, а моя страница перезагружается, т. Е. (Asynchronouspostback не работает). Я попытался изменить свой пул приложений для 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

Вы можете решить эту проблему ISAPI и CGI ограничений путем открытия IIS Manager, выберите сервер и дважды щелкните значок ISAPI и CGI Restrictions (при условии победы 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.

Если это так, это полностью вызовет эту проблему, as reported by Scott Guthrie славы Microsoft.

+0

Спасибо за ваш ответ, но извините, что он неполный! У меня серьезная проблема с проблемой Timer Tick AJAX.NET. Еще одна страница перезагружается каждые 2 секунды, даже после этого. –

+0

Не знаете, почему это (будет выглядеть немного больше), но вы можете захотеть изменить интервал таймера. Сейчас он установлен на 200 миллисекунд, что может вызвать путаницу страницы. –

+0

Я обновил ответ на возможное решение проблемы обратной связи. –