Vista自带IIS 7.0+Ajax.net的配置问题

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的配置也不可放过。

你可能感兴趣的:(JavaScript,.net,validation,assembly,Path,IIS)