删除MVC应用程序的web.config的<compilation> <assemblies>部分中的注释可修复InvalidOperationException

时间:2018-09-15 16:48:13

标签: c# .net asp.net-mvc web-config jit

我有以下情况的副本,可以一次又一次地进行复制(在部署appdir之前和之后,appdir包含相同的内容):

  • 在Umbraco,.NET 4.6下运行的MVC应用程序,具有自己开发的扩展名
  • 要进行部署,我将删除web.config以外的所有内容,并将新内容复制到IIS应用文件夹Windows 2012 R2 Server。
  • 应用程序自动回收,清空缓存,结果(仅在一个特定页面上,当触发输入字段的MVC验证时):InvalidOperationException,详细信息:

    An unhandled exception occurred
    System.InvalidOperationException: Either ErrorMessageString or ErrorMessageResourceName must be set, but not both.
    at System.ComponentModel.DataAnnotations.ValidationAttribute.SetupResourceAccessor()
    at System.ComponentModel.DataAnnotations.ValidationAttribute.get_ErrorMessageString()
    at System.ComponentModel.DataAnnotations.ValidationAttribute.FormatErrorMessage(String name)
    at System.ComponentModel.DataAnnotations.ValidationAttribute.IsValid(Object value, ValidationContext validationContext)
    
  • 然后我在<compile><assemblies>部分中删除评论(评论为第一行)
  • 结果:错误消失了
  • 添加评论:错误仍然消失
  • 再次从第一步开始:错误会再次出现

最让我惊讶的是,删除评论会产生这样的影响,以及上述错误的出现/消失之间的区别。

我无法检测到目录结构的差异。 <compilation>部分中的任何更改似乎都会触发此行为(甚至是评论)。 web.config其他部分中的其他更改不会 not 触发此行为。

我相信这是.NET刷新编译缓存(JIT缓存或其他方式)中的一个错误,但是我不确定。这是.NET Web应用程序的已知问题吗?就我所记得的(在.NET开发的二十年中),我还没有遇到过。

0 个答案:

没有答案