几个ASP.NET 2.0编译缺陷

过去的一年里,我们发现和修补了大家报告遇上的几个ASP.NET 2.0编译缺陷。

引发这些缺陷的原因有多个,但根本原因通常跟项目的结构有关,这些项目有特别的跨页面的循环依赖。这些缺陷往往在系统上发生大规模的文件变化时(譬如,一个抗病毒程序同时更新很多文件上的所有时间戳)会被触发。

出错信息的例子:

下面这些出错信息,是你遇上这些编译问题时,你也许看到的运行时异常类型的例子:

Unable to cast object of type 'ASP.masterpage _master' to type 'ASP.masterpage_master'.
(无法将ASP.masterpage_master类型的对象转换成ASP.masterpage_master类型)

或者:

Could not load file or assembly 'App_Web_e9dbmaj, Version=0.0.0.0, Culture=neutral, PublicKeyToken=null' or one of its dependencies. The system cannot find the file specified.
(无法装载文件或程序集“App_Web_e9dbmaj, Version=0.0.0.0, Culture=neutral, PublicKeyToken=null”或它的依赖向。系统找不到指定的文件。)

或者:

Compiler Error Message: CS0006: Metadata file 'C:\WINDOWS\Microsoft.NET\Framework\v2.0.50727\Temporary ASP.NET Files\cms.web\44e73607\b028acb3\App_global.asax.fakktchx.dll' could not be found
(编译错误信息:CS0006:找不到元数据文件“C:\WINDOWS\Microsoft.NET\Framework\v2.0. 50727\Temporary ASP.NET Files\cms.web\44e73607\b028acb3\App_global.asax.fakktchx. dll”。)

或者:

System.InvalidOperationException: The resource class for this page was not found. Please check if the resource file exists and try again
(System.InvalidOperationException: 找不到当前页面的资源类。请检查资源文件确实存在,然后再试。)
这些问题的临时解决方案:

如果你有一个应用开始抛出上面这些错误中的某一个时,你通常可以马上施用一个临时解决方案,打开你应用的web.config文件,将 <compilation> 节的 batch 属性设置成false:

<configuration>

   
<system.web>
       
<compilation debug="false" batch="false"></compilation>
   
</system.web>

</configuration>

这告诉ASP.NET把单个的 .aspx/.ascx 文件动态编译成单独的程序集,这会避免触发异常的循环引用的问题。

你也可以使用下列步骤,删去“Temporary ASP.NET Files”缓存里的文件,来临时解决这个问题:

  1. 点击Windows开始按钮,点击运行,输入 iisreset /stop,然后点击OK
  2. 打开 驱动字母: WINDOWS\Microsoft.NET\Framework\v2.0.50727\Temporary ASP.NET Files 目录。
  3. 删除第二步里你找出的目录里的所有文件和所有文件夹。
  4. 点击开始,点击运行,输入 iisreset /start,然后点击OK

你可以在Microsoft KB文章 #934839 (机器翻译的中文版)里找到这些临时方案的细节。

这些问题的QFE HotFix补丁现在可以下载了:

【译注:QFE=Quick Fix Engineering,快速修复工程】

作为上面施用配置文件临时方案的替代方案,你现在也可以下载和施用微软的一个QFE HotFix 补丁,该补丁修复了我们看到别人报告的编译问题。

这个编译问题的QFE HotFix补丁的直接下载链接在这里。你可以在这里的这个网页上找到其他常见的Visual Studio 和.NET 框架 QFE HotFixes。

重要注意事项:有不少人有时问我,他们是否应该主动安装QFE HotFixes(在他们遇上问题之前)。我总是建议别这么做,因为QFE hotfixes只经过有针对性的测试以确认解决了一个特定的问题,但并不经过整个产品的end to end sign-off (从头至尾,每一步都有签名同意,没问题才放行)。因此,我建议你只在你遇上上面这些针对性的问题时,你才施用它。

联系微软产品支持:

 如果你在安装补丁时有什么问题,或在安装后你还看到编译问题的话,你需要联系微软产品支持,他们可以帮你进一步调试问题。微软产品支持的电话是免费的,假如是针对产品的缺陷的话(无论是QFE HotFix请求还是你遇上的产品缺陷)。你可以在这个网页上找到如何联系微软产品支持的细节(该网页允许你按国家来查询本地电话号码)。

Visual Studio的大多数版本带有免费的产品支持券(product support ticket)(譬如,VS Pro with MSDN Premium每个订阅都有4个支持券)。你可以使用这些支持券得到 .NET 或 Visual Studio方面的帮助(譬如:帮你寻找你自己编码中的缺陷或性能问题,或者学习如何使用框架或 IDE中的某个特性)。

微软产品支持里有些非常,非常优异的工程师,如果你有问题的话,与他们合作将是非常愉快的事情。下面是些我强烈建议你订阅的 .NET 框架/ Visual Studio空间里的精彩博客:

如果你遇上你无法解决的问题,或者在生产性应用中遇上你需要急救的问题,给微软产品支持打个电话,你会遇上象上面列出的名单里的人,给你连上一个调试器,帮你诊断出问题所在。

谢谢

【原文地址】Public Hotfix Patch Available for ASP.NET Compilation Issues
【原文发表日期】 Wednesday, April 11, 2007 10:39 PM

过去的一年里,我们发现和修补了大家报告遇上的几个ASP.NET 2.0编译缺陷。

引发这些缺陷的原因有多个,但根本原因通常跟项目的结构有关,这些项目有特别的跨页面的循环依赖。这些缺陷往往在系统上发生大规模的文件变化时(譬如,一个抗病毒程序同时更新很多文件上的所有时间戳)会被触发。

出错信息的例子:

下面这些出错信息,是你遇上这些编译问题时,你也许看到的运行时异常类型的例子:

Unable to cast object of type 'ASP.masterpage _master' to type 'ASP.masterpage_master'.
(无法将ASP.masterpage_master类型的对象转换成ASP.masterpage_master类型)

或者:

Could not load file or assembly 'App_Web_e9dbmaj, Version=0.0.0.0, Culture=neutral, PublicKeyToken=null' or one of its dependencies. The system cannot find the file specified.
(无法装载文件或程序集“App_Web_e9dbmaj, Version=0.0.0.0, Culture=neutral, PublicKeyToken=null”或它的依赖向。系统找不到指定的文件。)

或者:

Compiler Error Message: CS0006: Metadata file 'C:\WINDOWS\Microsoft.NET\Framework\v2.0.50727\Temporary ASP.NET Files\cms.web\44e73607\b028acb3\App_global.asax.fakktchx.dll' could not be found
(编译错误信息:CS0006:找不到元数据文件“C:\WINDOWS\Microsoft.NET\Framework\v2.0. 50727\Temporary ASP.NET Files\cms.web\44e73607\b028acb3\App_global.asax.fakktchx. dll”。)

或者:

System.InvalidOperationException: The resource class for this page was not found. Please check if the resource file exists and try again
(System.InvalidOperationException: 找不到当前页面的资源类。请检查资源文件确实存在,然后再试。)
这些问题的临时解决方案:

如果你有一个应用开始抛出上面这些错误中的某一个时,你通常可以马上施用一个临时解决方案,打开你应用的web.config文件,将 <compilation> 节的 batch 属性设置成false:

<configuration>

   
<system.web>
       
<compilation debug="false" batch="false"></compilation>
   
</system.web>

</configuration>

这告诉ASP.NET把单个的 .aspx/.ascx 文件动态编译成单独的程序集,这会避免触发异常的循环引用的问题。

你也可以使用下列步骤,删去“Temporary ASP.NET Files”缓存里的文件,来临时解决这个问题:

  1. 点击Windows开始按钮,点击运行,输入 iisreset /stop,然后点击OK
  2. 打开 驱动字母: WINDOWS\Microsoft.NET\Framework\v2.0.50727\Temporary ASP.NET Files 目录。
  3. 删除第二步里你找出的目录里的所有文件和所有文件夹。
  4. 点击开始,点击运行,输入 iisreset /start,然后点击OK

你可以在Microsoft KB文章 #934839 (机器翻译的中文版)里找到这些临时方案的细节。

这些问题的QFE HotFix补丁现在可以下载了:

【译注:QFE=Quick Fix Engineering,快速修复工程】

作为上面施用配置文件临时方案的替代方案,你现在也可以下载和施用微软的一个QFE HotFix 补丁,该补丁修复了我们看到别人报告的编译问题。

这个编译问题的QFE HotFix补丁的直接下载链接在这里。你可以在这里的这个网页上找到其他常见的Visual Studio 和.NET 框架 QFE HotFixes。

重要注意事项:有不少人有时问我,他们是否应该主动安装QFE HotFixes(在他们遇上问题之前)。我总是建议别这么做,因为QFE hotfixes只经过有针对性的测试以确认解决了一个特定的问题,但并不经过整个产品的end to end sign-off (从头至尾,每一步都有签名同意,没问题才放行)。因此,我建议你只在你遇上上面这些针对性的问题时,你才施用它。

联系微软产品支持:

 如果你在安装补丁时有什么问题,或在安装后你还看到编译问题的话,你需要联系微软产品支持,他们可以帮你进一步调试问题。微软产品支持的电话是免费的,假如是针对产品的缺陷的话(无论是QFE HotFix请求还是你遇上的产品缺陷)。你可以在这个网页上找到如何联系微软产品支持的细节(该网页允许你按国家来查询本地电话号码)。

Visual Studio的大多数版本带有免费的产品支持券(product support ticket)(譬如,VS Pro with MSDN Premium每个订阅都有4个支持券)。你可以使用这些支持券得到 .NET 或 Visual Studio方面的帮助(譬如:帮你寻找你自己编码中的缺陷或性能问题,或者学习如何使用框架或 IDE中的某个特性)。

微软产品支持里有些非常,非常优异的工程师,如果你有问题的话,与他们合作将是非常愉快的事情。下面是些我强烈建议你订阅的 .NET 框架/ Visual Studio空间里的精彩博客:

如果你遇上你无法解决的问题,或者在生产性应用中遇上你需要急救的问题,给微软产品支持打个电话,你会遇上象上面列出的名单里的人,给你连上一个调试器,帮你诊断出问题所在。

转载于:https://www.cnblogs.com/chenbg2001/archive/2009/01/23/1380580.html

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值