Posted on 2008-05-11 00:53
Jerson Ju 阅读(155)
评论(0) 编辑 收藏 网摘 所属分类:
asp.net
这两天在帮朋友做一个网站,采用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点
感谢博客园长期以来在学习上的帮助,转载请保持原文完整性,请注明出处。