TIPS-How to enabled MS AJAX for existing web project?

看過目前網路上找得到的MS AJAX Demo,清一色的做法都是新建一個"ASP.NET AJAX-Enabled Web Application"再開始動工。但是如果手上有已經開發到一半的Web Site Project或Web Application Project,又想要在上面加上AJAX功能,怎麼辦?  難道要砍掉重練嗎?

其實AJAX-Enabled Web Application的關鍵在於web.config中有些特殊的設定,只要將web.config照下面的方法修改(當然,要安裝ASP.NET 2.0 AJAX Extensions 1.0),一般的專案裡就可以加上AJAX Control囉!  大家不妨試試,如果有問題,歡迎留言提出。

<?xml version="1.0"?>
<configuration>
     <!-- STEP 1 - 加入configSections -->
     <configSections>
           <sectionGroup name="system.web.extensions" type="System.Web.Configuration.SystemWebExtensionsSectionGroup, System.Web.Extensions, Version=1.0.61025.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35">
                <sectionGroup name="scripting" type="System.Web.Configuration.ScriptingSectionGroup, System.Web.Extensions, Version=1.0.61025.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35">
                     <section name="scriptResourceHandler" type="System.Web.Configuration.ScriptingScriptResourceHandlerSection, System.Web.Extensions, Version=1.0.61025.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35" requirePermission="false" allowDefinition="MachineToApplication"/>
                     <sectionGroup name="webServices" type="System.Web.Configuration.ScriptingWebServicesSectionGroup, System.Web.Extensions, Version=1.0.61025.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35">
                           <section name="jsonSerialization" type="System.Web.Configuration.ScriptingJsonSerializationSection, System.Web.Extensions, Version=1.0.61025.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35" requirePermission="false" allowDefinition="Everywhere"/>
                           <section name="profileService" type="System.Web.Configuration.ScriptingProfileServiceSection, System.Web.Extensions, Version=1.0.61025.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35" requirePermission="false" allowDefinition="MachineToApplication"/>
                           <section name="authenticationService" type="System.Web.Configuration.ScriptingAuthenticationServiceSection, System.Web.Extensions, Version=1.0.61025.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35" requirePermission="false" allowDefinition="MachineToApplication"/>
                     </sectionGroup>
                </sectionGroup>
           </sectionGroup>
     </configSections>
     <!-- STEP 1 END -->
     <connectionStrings/>
     <system.web>
           <!-- STEP 2 - 加上Page中的asp:宣告,System.Web.UI改指向System.Web.Extension -->
           <pages>
                <controls>
                     <add tagPrefix="asp" namespace="System.Web.UI" assembly="System.Web.Extensions, Version=1.0.61025.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35"/>
                </controls>
           </pages>
           <!-- STEP 2 END -->
           <compilation debug="true">
                <assemblies>
                     <add assembly="System.Design, Version=2.0.0.0, Culture=neutral, PublicKeyToken=B03F5F7F11D50A3A"/>
                     <add assembly="System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=B77A5C561934E089"/>
                     <!-- STEP 3 - 加上System.Web.Extensions的Reference,也可以透過UI新增 -->
                     <add assembly="System.Web.Extensions, Version=1.0.61025.0, Culture=neutral, PublicKeyToken=31BF3856AD364E35"/>
                     <!-- STEP 3 END -->
                </assemblies>
           </compilation>
           <!-- STEP 4 - 加入HTTP Handler及HTTP Module -->
           <httpHandlers>
                <remove verb="*" path="*.asmx"/>
                <add verb="*" path="*.asmx" validate="false" type="System.Web.Script.Services.ScriptHandlerFactory, System.Web.Extensions, Version=1.0.61025.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35"/>
                <add verb="*" path="*_AppService.axd" validate="false" type="System.Web.Script.Services.ScriptHandlerFactory, System.Web.Extensions, Version=1.0.61025.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35"/>
                <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>
           <!-- STEP 4 END -->
           <authentication mode="Windows"/>
           <customErrors mode="Off"/>
     </system.web>
     <!-- STEP 5 - 加入system.webServer -->
     <system.webServer>
           <validation validateIntegratedModeConfiguration="false"/>
           <modules>
                <add name="ScriptModule" preCondition="integratedMode" type="System.Web.Handlers.ScriptModule, System.Web.Extensions, Version=1.0.61025.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35"/>
           </modules>
           <handlers>
                <remove name="WebServiceHandlerFactory-ISAPI-2.0"/>
                <add name="ScriptHandlerFactory" verb="*" path="*.asmx" preCondition="integratedMode" type="System.Web.Script.Services.ScriptHandlerFactory, System.Web.Extensions, Version=1.0.61025.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35"/>
                <add name="ScriptHandlerFactoryAppServices" verb="*" path="*_AppService.axd" preCondition="integratedMode" type="System.Web.Script.Services.ScriptHandlerFactory, System.Web.Extensions, Version=1.0.61025.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35"/>
                <add name="ScriptResource" preCondition="integratedMode" verb="GET,HEAD" path="ScriptResource.axd" type="System.Web.Handlers.ScriptResourceHandler, System.Web.Extensions, Version=1.0.61025.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35"/>
           </handlers>
     </system.webServer>
     <!-- STEP 5 END -->
     <appSettings />
</configuration>
 
歡迎推文分享:
Published 09 March 2007 12:45 AM 由 Jeffrey
Filed under: ,
Views: 17,643



意見

# alan said on 06 November, 2007 01:36 AM

您好我最近把之前的asp.net專案改成asp.net ajax的專案

雖已經依您提供的web.config修改

但在web.config檔上發生 下列錯誤,不知大大可否指點迷津一下

組態錯誤

描述: 處理服務此要求所需的組態檔時發生錯誤。請檢視下列的特定錯誤詳細資訊,並適當修改您的組態檔。

剖析器錯誤訊息: 無法辨認的屬性 'type'。

原始程式錯誤:

<sectionGroup name="system.web.extensions" type="System.Web.Configuration.SystemWebExtensionsSectionGroup, System.Web.Extensions, Version=1.0.61025.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35">

# Jeffrey said on 06 November, 2007 03:19 AM

To alan, 檢查一下IIS上WebApplication的ASP.NET的版本是否被誤設成1.1?

# teddy said on 19 March, 2008 11:01 PM

謝謝你的回覆,

我也正為這個問題頭痛,

原來是我的IIS設成1.1.

# Lance said on 21 April, 2008 09:34 PM

你好,想請問,我是用asp.net ajax的專案開發,但....

在專案裡的web.config裡,requirePermission="false",

剖析器錯誤訊息說'requirePermission' 屬性未宣告,不知道是哪裡有問題?

#said on 02 May, 2008 09:24 AM

今天也遇到这个曾是 ,在网上参看了很多的例子,还是没有解决问题。为了一个ajax功能,得在web.config里添加这么多的节点,实在不敢恭维微软的设计

# Jeffrey said on 03 May, 2008 07:15 AM

to Lance, 有沒有可能是因為IIS把WebApp設成ASP.NET 1.1?

to 峰, 如果是純Client端的效果(Modal Box, Accordion...),我現在也傾向用jQuery,輕巧多了。

ASP.NET AJAX最大的好處應該是讓完全不懂Javascript的麻瓜也可以寫出AJAX來,但在效能與複雜度上的確不是最佳的解決方案。如果你具有不錯的Javascript基準,倒是可以考量如jQuery之類的Framework。到ASP.NET 3.5後,AJAX會變成內建,也不會再需要做這些手工了。

你的看法呢?

(必要的) 
(必要的) 
(選擇性的)
(必要的) 
(提醒: 因快取機制,您的留言幾分鐘後才會顯示在網站,請耐心稍候)

5 + 3 =

搜尋

Go

<March 2007>
SunMonTueWedThuFriSat
25262728123
45678910
11121314151617
18192021222324
25262728293031
1234567
 
RSS
創用 CC 授權條款
【廣告】
twMVC
最新回應

Tags 分類檢視
關於作者

一個醉心技術又酷愛分享的Coding魔人,十年的IT職場生涯,寫過系統、管過專案, 也帶過團隊,最後還是無怨無悔地選擇了技術鑽研這條路,近年來則以做一個"有為的中年人"自許。

文章典藏
其他功能

這個部落格


Syndication