【发布时间】:2014-08-05 04:58:27
【问题描述】:
在一个环境中,什么可能导致来自 ASP.NET 网站中的辅助程序集的 TypeLoadException,而在另一个环境中则不会?这是我所拥有的:
- Company.Web,一个.NET类库;参考 System.Web 4.0
- Company.Web 包含一些
HttpResponse扩展方法 - Company.Web 包含一个引用我的
HttpResponse扩展的MediaRequestHandler(: IHttpHandler),以及HttpContext和相关类 - Company.UI,一个 ASP.NET WebForms 应用程序集;参考 System.Web 4.0 和 Company.Web
- 两个项目中的引用都是
<Reference Include="System.Web" /> - MediaRequestHandler 配置如下图
- 服务器 ABC,站点 1 和站点 2 在 IIS 中
- DEV 分支,从我构建此代码的位置到服务器 ABC,站点 1
- MAIN 分支,我将这段代码全部合并到这里,然后我从这里构建到服务器 ABC,站点 2
- 这些是 Sitecore 网站。
这适用于站点 1,但是当站点 2 尝试调用我的 MediaRequestHandler 时,我在站点 2 中得到了一个 TypeLoadException。异常中没有太多细节(下)。我在服务器上运行了 fuslogvw 并记录了故障,但什么也没看到;我在记录所有内容的情况下运行它,并在 Company.Web 上看到“成功的部分加载”。后者似乎是正常行为;当然,程序集正在加载,因为其中的所有其他内容都可以正常工作。
上面的项目符号是我想我可能搞砸的地方,但我检查了合并和基本站点配置,我看不出有任何差异。我的下一步是深入研究配置比较,但与此同时,任何人都可以就我的调查重点提供建议吗?
配置:
<system.webServer>
<handlers>
<add verb="*" path="sitecore_media.ashx" type="Company.Web.Media.MediaRequestHandler, Company.Web" name="Company.MediaRequestHandler" />
...
<system.web>
<httpHandlers>
<add verb="*" path="sitecore_media.ashx" type="Company.Web.Media.MediaRequestHandler, Company.Web" />
例外:
Exception information:
Exception type: TypeLoadException
Exception message: Could not load type 'Company.Web.Media.MediaRequestHandler' from assembly 'Company.Web'.
at System.RuntimeTypeHandle.GetTypeByName(String name, Boolean throwOnError, Boolean ignoreCase, Boolean reflectionOnly, StackCrawlMarkHandle stackMark, IntPtr pPrivHostBinder, Boolean loadTypeFromPartialName, ObjectHandleOnStack type)
at System.RuntimeTypeHandle.GetTypeByName(String name, Boolean throwOnError, Boolean ignoreCase, Boolean reflectionOnly, StackCrawlMark& stackMark, IntPtr pPrivHostBinder, Boolean loadTypeFromPartialName)
at System.Type.GetType(String typeName, Boolean throwOnError, Boolean ignoreCase)
at System.Web.Compilation.BuildManager.GetType(String typeName, Boolean throwOnError, Boolean ignoreCase)
at System.Web.Configuration.HandlerFactoryCache.GetTypeWithAssert(String type)
at System.Web.Configuration.HandlerFactoryCache.GetHandlerType(String type)
at System.Web.Configuration.HandlerFactoryCache..ctor(String type)
【问题讨论】:
-
检查这些链接是否对How can I troubleshoot : System.TypeLoadException? 和What could be causing a System.TypeLoadException? 有帮助,如果可以提供更多详细信息,请尝试使用 Fusion Log 查看器。
标签: asp.net .net iis reflection sitecore