【发布时间】:2011-02-16 18:23:58
【问题描述】:
在我们的 .NET 3.5 Web 应用程序的 ASP.NET 预编译期间,在类型初始化程序中执行各种初始化。当环境配置不正确时,其中一个类型初始值设定项会引发自定义异常。但是,当我们的自定义异常被抛出时,aspnet_compiler.exe 会告诉我们:
[exec] error ASPRUNTIME: Type is not resolved for member 'App.Project.CustomException,App.Project, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null'.
[exec]
[exec] [SerializationException]: Type is not resolved for member 'App.Project.CustomException,App.Project, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null'.
[exec] at System.Web.Compilation.BuildManagerHost.PrecompileApp(ClientBuildManagerCallback callback)
[exec] at System.Web.Compilation.ClientBuildManager.PrecompileApplication(ClientBuildManagerCallback callback, Boolean forceCleanBuild)
[exec] at System.Web.Compilation.ClientBuildManager.PrecompileApplication(ClientBuildManagerCallback callback)
[exec] at System.Web.Compilation.Precompiler.Main(String[] args)
请注意,没有包含“真实”的堆栈跟踪信息。但是,当我更改代码以引发 InvalidOperationException(而不是我们的自定义异常)时,堆栈跟踪被正确包含。 (顺便说一句,我们的 CustomException 类型使用 [Serializable] 进行注释。当我们删除 [Serializable] 注释时,aspnet_compiler.exe 会抱怨不同——我们的自定义异常没有被标记为这样。)
有谁知道为什么在 ASP.NET 预编译期间抛出自定义异常会导致辅助 SerializationException?为什么它试图序列化异常?同样,为什么使用 BCL InvalidOperationException not 会导致二级 SerializationException?
这可能是因为 aspnet_compiler.exe 正在尝试对意外异常进行某种反映吗? (因此,由于它没有加载我们的 App.Project 程序集,因此无法解析类型?)
【问题讨论】:
标签: c# asp.net remoting .net-remoting