分析:Handler的奇怪现象,<%@加不上

在做项目时,使用Handler时,文件头部无法书写<%@ WebHandler Language="C#" Class="Handler" %>, <%@下面总是有红色错误提示,怎么解决?

解决方案:

1、 新建网站(注意是网站,不是项目)

2、 选择添加新项一般处理程序(Handler)页面,如Handler.ashx

3、在原项目中添加现有项,选择刚刚建好的那个页面Handler.ashx到你的项目里即可。

可是为什么会有这么坑爹的问题存在呢?

事实一:

仔细观察你会发现,在项目里的Handler.ashx与普通的aspx类似,具有Handler.ashx.cs页面,并且默认Handler.ashx就是Handler.ashx.cs,认为它是后台页面,<%@ WebHandler Language="C#" Class="Handler" %>肯定不允许添加。

事实二:

而网站中只有Handler.ashx,VS认为这是前台页面,所以存在<%@ WebHandler Language="C#" Class="Handler" %>是合情合理的。

事实三:

虽然不相同,那采取上面的方法已经解决。

原因可以从vs2010的几个规则说起:

规则一:vs2010认为项目页面都有前台页和后台页,执行严格的code behind模式。

规则二:vs2010认为部分项目页面不需要前台页面。

如:一般处理程序页面(Handler.ashx)、web服务页面(Webservice.asmx),他们在vs里显示有,但是你一打开就成了Handler.ashx.cs和Webservice.asmx.cs

规则三:vs2010认为网站不需要执行严格的code behind模式。

规则四:vs2010认为项目和网站子文件兼容。

总的来说,这应该是个BUG,是微软的规则冲突而引起的奇怪现象。

posted on 2012-08-02 15:18  Empty.  阅读(115)  评论(0编辑  收藏  举报

导航