HttpHandler使用默认命名空间

时间:2009-03-20 16:29:44

标签: asp.net namespaces httphandler

我有一个名为Handler的HttpHandler,我编译成一个DLL并放入我的ASP.NET应用程序的/ bin文件夹中。然后我有一个.ashx文件:

<% @ webhandler language="C#" class="Handler" %> 

但我得到无法创建类型'Handler'错误。

但是,如果我将Handler包装在一个无偿的命名空间中,请说 foo ,并将.ashx更改为

<% @ webhandler language="C#" class="foo.Handler" %> 

它工作正常。为什么我不能使用没有命名空间,呃,默认命名空间? Microsoft在msdn网站上的许多HttpHandlers示例中省略了一个名称空间。

1 个答案:

答案 0 :(得分:3)

这是因为.Net Assemblies的性质。任何引用类型或ValueType都必须包含在命名空间中。命名空间用于逻辑分组。在您的情况下,您的“Handler”类是用户定义的引用类型。任何程序集在根目录下都可以有一个或多个根名称空间,但它不能在根目录中具有引用类型或值类型。实际上,当您在“项目属性”的“应用程序”选项卡中创建新类库项目时,它可以选择为类库项目指定默认名称空间。因此,无论何时在Project中创建一个New Class,它都会将它包装在ProjectProperties.Application.DefaultNameSpace中指定的Default NameSpace中。

如果您希望看到这一点,请尝试使用.Net SDK附带的IL Disassemblar打开.Net程序集。