我编写了一个来自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子目录中的任何代码文件之前配置并创建了运行状况监视系统。
我猜测文档实际上对自定义事件不正确,他们必须进入与网站不同的组件。
答案 0 :(得分:3)
(只是猜测......)
对于Web站点,App_Code中的类在运行时才会被编译。在MyWebErrorEvent有机会动态编译之前,正在编译Web.config。您最好的办法是与网站分开创建一个类库,并从您的网站引用该项目。另一种选择是转换为使用Web应用程序,它实际上在编译时将所有类型编译成一个DLL,而不是在运行时动态发出它们。
答案 1 :(得分:1)
无需将其放在单独的DLL中。而是使用
type="MyWebErrorEvent,App_Code"
引用MyWebErrorEvent类。
答案 2 :(得分:0)
您的类型MyWebErrorEvent是否使用命名空间?
错误消息看起来像是一个典型的缺少命名空间问题。