ASP.NET Core TypeLoadException:无法从程序集“System.Web”中加载类型“System.Web.PreApplicationStartMethodAttribute”。

3
在开发ASP.NET Core MVC项目的过程中,我多次遇到了这个异常。当向MVC控制器POST回传时就会发生这种情况。假设ViewModel看起来像这样:
using System.Web;

namespace MyNamespace 
{
    public class MyViewModel 
    {
        public List<SelectListItem> MyOptions { get; set; }
    }
}

这个视图的标题包含以下内容

@model MyNamespace.MyViewModel

如前所述,在POST后(假设视图中有一个表单和一个postback),会引发此异常。

在处理请求时发生未处理的异常。 TypeLoadException: 无法从程序集'System.Web, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a' 中加载类型 'System.Web.PreApplicationStartMethodAttribute'。 System.ModuleHandle.ResolveType(RuntimeModule module, int typeToken, IntPtr* typeInstArgs, int typeInstCount, IntPtr* methodInstArgs, int methodInstCount, ObjectHandleOnStack type)


6
System.Web 翻译成 ASP.NETMicrosoft.AspNetCore 翻译成 ASP.NET Core。请不要混淆它们。 - Camilo Terevinto
1个回答

3

经过数小时的调试,问题最终被发现是一个错误的using语句。

SelectListItem同时存在于System.WebMicrosoft.AspNetCore.Mvc.Rendering中。

然而,在从System.Web引用时,.NET Core不支持其中的某些元素。

只需将using语句更改为以下内容即可解决问题:

using Microsoft.AspNetCore.Mvc.Rendering;

这种情况可能会发生在其他类型中,因此如果您在ASP.NET Core MVC中遇到奇怪的错误,建议检查您的System.Web使用语句。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接