Vista自带IIS 7.0+Ajax.net的配置问题
VS2005 sp1在Vista下运行还是不错的。不过很多新的东西在一起就容易产生不兼容的问题。项目使用Asp.Net,用.Net 2.0。部署在Windos Server 2003 + IIS 6.0。开发使用的是Vista,自带有IIS 7.0。项目还使用Ajax.net。
Vista下的开发很容易,只要安装好IIS,注意子选项要选得宁多不缺。很多问题都是因为IIS 7.0里面的功能没安装。.Net 2.0的问题在Vista下没有。无需regiis。注意次序很重要。IIS装好后就可以装VS2005。2003大概是不兼容的。装好后马上升级。Vista自动安装VS2005 SP1 for Vista。运行的时候老老实实run as administrator。这些功课都做完后基本可以用来开发了。但是Ajax.net现在已经必不可少,也要下载来安装。安装十分简单,但如果不是按照上面的次序安装就可能缺功能了。
到此安装结束。打开VS,新建Web Project的时候可以看到Ajax enabled web app选项。ok,就是它了。运行下新的项目,一般不会有错。但我遇到了很多情况。包括以前,现在的。现来总结一下。
首先要确认AjaxControlToolkit.dll 拷贝到Bin目录。项目向导有时候不会那么聪明的。
IIS中是否设置了DefaultAppPool,一般不要去设定为Classic .Net AppPool。
检查Web.Config文件。为了兼容以前版本,<system.web>中必须有:
<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>
为了能在IIS 7.0下工作,下面也是同样要的:
<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-Integrated" />
<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>
其中<validation validateIntegratedModeConfiguration="false"/>能让两个同样的设置平安共处,在IIS 6.0和7.0下都能使用。
检查assembly有没有加上;<add tagPrefix="ajaxToolkit" namespace="AjaxControlToolkit" assembly="AjaxControlToolkit"/>可以方便在代码中直接插入<ajaxToolkit:ModalPopupExtender>之类标签。
测试项目阶段,如果IIS提示有Permission问题,解锁:(run as administrator)
C:/Windows/system32>%windir%/system32/inetsrv/appcmd.exe unlock config -section:
system.webServer/handlers
若出现JavaScript报错,什么Sys undefined,看看Web.Config。还有axd文件是否可以被IIS解析?
总之,IIS6的问题要少很多。在6上成功运行的话,毛病多数在Web.Config上。IIS的配置也不可放过。
VS2005 sp1在Vista下运行还是不错的。不过很多新的东西在一起就容易产生不兼容的问题。项目使用Asp.Net,用.Net 2.0。部署在Windos Server 2003 + IIS 6.0。开发使用的是Vista,自带有IIS 7.0。项目还使用Ajax.net。
Vista下的开发很容易,只要安装好IIS,注意子选项要选得宁多不缺。很多问题都是因为IIS 7.0里面的功能没安装。.Net 2.0的问题在Vista下没有。无需regiis。注意次序很重要。IIS装好后就可以装VS2005。2003大概是不兼容的。装好后马上升级。Vista自动安装VS2005 SP1 for Vista。运行的时候老老实实run as administrator。这些功课都做完后基本可以用来开发了。但是Ajax.net现在已经必不可少,也要下载来安装。安装十分简单,但如果不是按照上面的次序安装就可能缺功能了。
到此安装结束。打开VS,新建Web Project的时候可以看到Ajax enabled web app选项。ok,就是它了。运行下新的项目,一般不会有错。但我遇到了很多情况。包括以前,现在的。现来总结一下。
首先要确认AjaxControlToolkit.dll 拷贝到Bin目录。项目向导有时候不会那么聪明的。
IIS中是否设置了DefaultAppPool,一般不要去设定为Classic .Net AppPool。
检查Web.Config文件。为了兼容以前版本,<system.web>中必须有:









为了能在IIS 7.0下工作,下面也是同样要的:














其中<validation validateIntegratedModeConfiguration="false"/>能让两个同样的设置平安共处,在IIS 6.0和7.0下都能使用。
检查assembly有没有加上;<add tagPrefix="ajaxToolkit" namespace="AjaxControlToolkit" assembly="AjaxControlToolkit"/>可以方便在代码中直接插入<ajaxToolkit:ModalPopupExtender>之类标签。
测试项目阶段,如果IIS提示有Permission问题,解锁:(run as administrator)
C:/Windows/system32>%windir%/system32/inetsrv/appcmd.exe unlock config -section:
system.webServer/handlers
若出现JavaScript报错,什么Sys undefined,看看Web.Config。还有axd文件是否可以被IIS解析?
总之,IIS6的问题要少很多。在6上成功运行的话,毛病多数在Web.Config上。IIS的配置也不可放过。