posts - 40, comments - 32, trackbacks - 0, articles - 2
  博客园 :: 首页 :: 新随笔 :: 联系 :: 订阅 订阅 :: 管理

公告

vs2008多定向2.0 framework开发asp.net ajax 1.0站点发布到虚拟主机常见问题

Posted on 2008-05-11 00:53 Jerson Ju 阅读(...) 评论(...) 编辑 收藏
      这两天在帮朋友做一个网站,采用asp.net div + css 标准Web方式开发。今天上午测试发布时,忽然遇到一些问题是开始没有估计到的,写下来希望给后面的人有所借鉴.开发开始阶段,我曾经估计过发布风险有两个。 
    
        第一个预计到的问题:VS2008 自己带了asp.net ajax但是要多定向建3.5的工程,才能使用。所以我不能建3.5框架的工程。因为目前商业的虚拟主机几乎还不支持。我只能建2.0框架的工程,但是默认不是不能使用asp.net ajax的。需要打个补丁,然后再手动安装asp.net ajax 1.0.老外已经写得很详细了(
具体方法).

       第二个预计到的问题是: ajax toolkit在虚拟主机上是可能没有装,这个好办。复制System.Web.Extensions.dll System.Web.Extensions.Design.dll两个文件到bin目录就搞定了。
      
       上面是我早想到的问题,但是今天我发布时候遇到新的问题。可能是运气背,虚拟主机是window20003+iis6。发布上去后.报了一页错误,运行时错误。这个问题见多不怪了,服务器没有设置默认页是Default.aspx。所以报的错,我直接敲入
http://ip/Default.aspx 运行,可以访问了。呵呵,但是ajax 没有效果,"sys 没有定义" js 报错。一波未平一波又起。郁闷中。。。。
           在我的xp sp2 英文版上运行很好啊,为什么发布就出js报错呢。马上装vm 5.5,安装xp sp2 中文版 win2003 sp1中文 做测试。测试结果 在中文xp sp2上完全正常。win2003不能运行,跟发布到虚拟主机上一样,js报错。思索中。。asp.net ajax toolkit 请求js文件原来,是通过 <script src="*.ScriptResource.axd"></script>来请求。
httphandler来处理,然后发送js到客户端的。马上去看web.config去看httphandler的配置节点。
<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>

对照了几次版本号,已经publickeyToken ,完全是没有问题。根据http原理和.net运行机理。想到httphandler 是在iis映射之后的。肯定是iis出了问题。跑到iis -->虚拟目录-->属性-->配置-->映射-->.axd  下面有个“检查文件是否存在”选项是勾上的。在去xp sp2的IIS看下,xp里的是没有勾的。win2003 sp1默认是勾上的,错误就在这里。去掉这个勾。再次测试OK,呵呵!成功了。“谢谢MTV CCTV  湖南卫视 呵呵。。。兴奋中。。。。”
       找到问题的根源就好办了,我后面拨打电话,要虚拟主机供应商技术员去设置好了。
                                                                                                                   作者:朱剑
                                                                                                                   2008年5月11号凌晨1点
                                                                    感谢博客园长期以来在学习上的帮助,转载请保持原文完整性,请注明出处。