无法从web.config引用自定义事件

时间:2009-01-27 17:00:58

标签: asp.net web-config

我编写了一个来自MyWebErrorEvent的自定义事件WebErrorEvent,该事件位于我的ASP.NET 2.0网站项目的App_Code文件夹中。类MyWebErrorEvent不包含在命名空间中。我已将以下内容放入我的web.config文件中:

<configuration>
  <system.web>
    <healthMonitoring>
      <eventMappings>
        <add name="Event1" startEventCode="0" endEventCode="2147483647" type="MyWebErrorEvent"/>
      </eventMappings>
    </healthMonitoring>
  </system.web>
</configuration>

在编译时和运行时,我收到以下错误:

Description: An error occurred during the processing of a configuration file required to service this request. Please review the specific error details below and modify your configuration file appropriately.

Parser Error Message: Could not load type 'MyWebErrorEvent'.

Source Error: 

Line 16: <healthMonitoring>
Line 17: <eventMappings>
Line 18: <add name="Event1" startEventCode="0" endEventCode="2147483647" type="MyWebErrorEvent"/>
Line 19: </eventMappings>
Line 20: </healthMonitoring>

类MyWebErrorEvent确实编译时没有错误。任何人都知道如何解决这个问题?

编辑: http://msdn.microsoft.com/en-us/library/bb398933.aspx说这应该适用于自定义事件。引用:

  

将包含自定义Web事件实现的程序集添加到ASP.NET应用程序的Bin子目录中。或者,您可以将事件源代码文件添加到App_Code子目录。

但是它也说这不适用于自定义事件提供程序:

  

将包含自定义提供程序实现的程序集放在应用程序的Bin子目录中。您不能将提供程序源代码文件放在App_Code子目录中,因为在编译App_Code子目录中的任何代码文件之前配置并创建了运行状况监视系统。

我猜测文档实际上对自定义事件不正确,他们必须进入与网站不同的组件。

3 个答案:

答案 0 :(得分:3)

(只是猜测......)

对于Web站点,App_Code中的类在运行时才会被编译。在MyWebErrorEvent有机会动态编译之前,正在编译Web.config。您最好的办法是与网站分开创建一个类库,并从您的网站引用该项目。另一种选择是转换为使用Web应用程序,它实际上在编译时将所有类型编译成一个DLL,而不是在运行时动态发出它们。

答案 1 :(得分:1)

无需将其放在单独的DLL中。而是使用

type="MyWebErrorEvent,App_Code"引用MyWebErrorEvent类。

答案 2 :(得分:0)

您的类型MyWebErrorEvent是否使用命名空间?

错误消息看起来像是一个典型的缺少命名空间问题。