Newtonsoft.Json nuget错误,某些引用不起作用

时间:2020-02-20 20:32:07

标签: asp.net asp.net-web-api asp.net-mvc-5.2

每次尝试使用Newtonsoft.Json配置时都需要帮助,出现错误:

Severity Code Description Project File Line Suppression State Suppression State
Error CS0433 The type "JObject" exists in "Newtonsoft.Json, Version = 6.0.0.0, Culture = neutral, PublicKeyToken = 30ad4fe6b2a6aeed" and "Newtonsoft.Json, Version = 12.0.0.0, Culture = neutral,
PublicKeyToken = 30ad4fe6b2a6aeed "mia C: \ Users \ Wesley \ source \ repos \ mia2 \ mia \ Controllers \ Api \ ContaController.cs 18 Active

我已经多次重新安装了Nuget软件包,但它不起作用,仅在此应用程序中出现了此问题

我的控制器示例

public IHttpActionResult Login (JObject form)
    {
        db.Configuration.ProxyCreationEnabled = false;
        var email = string.Empty;
        var password = string.Empty;

        dynamic JsonObject = form;

        try
        {
            email = JsonObject.Email.Value;
            password = JsonObject.Password.Value;
        }
        catch
        {

            return BadRequest("chamada Incorreta, Campo Usuário e Senha são necessários");
        }

        var userContext = new ApplicationDbContext();
        var userManager = new UserManager<ApplicationUser>(new UserStore<ApplicationUser>(userContext));
        var userASP = userManager.Find(email, password);

        if (userASP == null)
        {
            return this.BadRequest("Usuário ou Senha incorretos");
        }

        var user = db.Users.Where(u => u.UserName == email).FirstOrDefault();

        if (userASP == null)
        {
            return this.BadRequest("Usuário ou Senha incorretos");
        }

        var userResponse = new UserResponse
        {
            UserId = user.UserId,
            UserName = user.UserName,
            FirstName = user.FirstName,
            LastName = user.LastName,
            Admin = userManager.IsInRole(userASP.Id, "Admin"),
            Analista = userManager.IsInRole(userASP.Id, "Analista"),
            Parceiro = userManager.IsInRole(userASP.Id, "Parceiro"),
            Vendedor = userManager.IsInRole(userASP.Id, "Vendedor"),
            Financeiro = userManager.IsInRole(userASP.Id, "Financeiro"),
            IsEnabled = user.IsEnabled,
            TinyUserId = user.TinyUserId,
            ConsultorId = user.ConsultorId,
            CampanhaId = user.CampanhaId,

        };
                return Ok(userResponse);
    }

1 个答案:

答案 0 :(得分:1)

此问题可能有两个原因:

    1. 您的解决方案中有多个项目使用不同版本的Newtonsoft.Json
    1. 您在bin / obj /临时文件夹中的某个地方有一个流氓Newtonsoft.Json dll。

解决方案:

    1. 如果使用Visual Studio,则可以使用它查看解决方案中每个项目中使用的引用。 检查哪个项目使用哪个版本的Newtonsoft.Json。您只想使用一个,只要您保持一致就没关系。找到适用于所有项目的最低版本,并在所有地方使用它。一旦您使用Newtonsoft.Json的一个版本,则可以再次构建并继续工作。

如果允许您的解决方案使用多个版本,则将不断遇到问题。构建解决方案时,将构建每个项目,并将生成的dll(包括其其他引用)复制到所需的任何目的地。它们甚至会相互覆盖,这又引发了另一组问题,因为一个项目期望以12.0为例,而获得版本6。

    1. 首先清洗解决方案,该解决方案将删除所有dll。确保在各处删除Bin和Obj文件夹。然后也去清理Internet临时文件 这将解决您可能拥有的所有意外版本。您可能甚至在一些根本不了解的地方都有一些被遗忘的dll。