其实扩展名为ashx与为axd基本上是一样的都是用于写web handler可以通过它来调用IHttpHandler类它免去了普通aspx页面的控件解析以及页面处理的过程 唯一不同的地方是axd扩展名的必须要在webconfig中的<httpHandlers>中进行注册而ashx直接在项目中当成aspx那样添加使用即可 所 以在项目的添加文件中向导只有添加ashx文件的模板而没有添加axd文件的模板那微软为什么这么无聊搞两个后缀全部使用ashx不就行了么?干 脆利落原来如果你的web handler代码不在Web的项目中的话那你就不能使用ashx了因为如果不在webconfig中注册的话系统根本不知道要在那个dll库中 才能找到相应的代码 如 <add verb="*" path="OpenSearchaxd" type="CompanyComponentsHttpHandlerOpenSearchHandler (命名空间类名)CompanyExtensions(dll文件名)" validate="false"/> 只有注册了web才知道OpenSearchaxd原来是在CompanyExtensionsdll中使用CompanyComponentsHttpHandlerOpenSearchHandler类处理 当然你搞个<add verb="*" path="OpenSearchashx" type= 那也未免不可习惯规范而已 webconfig里那么写的原理是首先iis会把axd的文件handle然后就交给 FreeTextBoxControlsAssemblyResourceHandler FreeTextBox这个命名的类来处理而不是让aspnet去处理 但是你的服务器提供商可能为了安全起见把axd到aspnet_isapidll的映射去掉了所以你在服务器运行就错误了你现在唯一能做的就是联系你的服务器提供商让他们恢复这个映射 扩展名 axd 执行文件C:WINDOWSMicrosoftNETFrameworkvaspnet_isapidll 限制为GETHEADPOSTDEBUG 脚本引擎打勾 在服务器的IIS里有个默认的映射就是将*axd映射到aspnet_isapidll上 |