无法从同一程序集ASP.NET MVC中的另一个项目加载类型

时间:2014-07-31 19:58:32

标签: c# asp.net asp.net-mvc visual-studio-2013 asp.net-mvc-5

我在一个解决方案中有三个asp.net mvc 5项目。解决方案称为Bank24,因此也是程序集。项目Application_layer是主要项目。还有2个项目。有BusinessLogic_layer我在哪里使用数据库和Data layer我正在创建数据库。

当我尝试使用BusinessLogic_layer Application_layer中的类时,我收到运行时服务器错误 -

  

无法加载" BusinessLogic_layer.Services.DataService"来自汇编" Bank24,Version = 1.0.0.0,Culture = neutral,   公钥=空"

项目Application_layer已经引用了BusinessLogic_layer。包含已与Using指令链接的所需类的目录。所以我不知道它为什么要加载。

以下是Controller MainController的代码。我需要在方法Register中使用所需的类。它与using BusinessLogic_layer.Services;

相关联
using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using System.Web.Mvc;
using Microsoft.AspNet.Identity;
using Application_layer.Models;
using BusinessLogic_layer.Services;

namespace Application_layer.Controllers
{
[Authorize]
public class MainController : Controller
{

    ...

    public UserManager<ApplicationUser> UserManager { get; private set; }

    [HttpGet]
    [AllowAnonymous]
    //[ValidateAntiForgeryToken]
    public void Register()
    {
            var user = new ApplicationUser() { UserName = "Admin" };
            var result = UserManager.Create(user, "q1w2e3");
            if (result.Succeeded)
            {
                DataService dataWorker = new DataService();
                dataWorker.CreateUser("Admin", "Суренко Иван Васильевич", 0);
                RedirectToAction("Login", "Authorization");
            }
    }
}
}

以下是DataService类的代码,该代码位于另一个项目的Services文件夹中

using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using BusinessLogic_layer.Models;
using Data_layer.DataAccess;
using Data_layer.Models;

namespace BusinessLogic_layer.Services
{
public class DataService
{
    ...

    public void CreateUser(string login, string name, byte role)
    {
        bool isEmployee = false;
        if (role == 0)
            isEmployee = true;
        BankContext db = new BankContext();
        db.Users.Add(new User() { Login = login, Name = name, Role = role, IsEmployee = isEmployee });
        db.SaveChanges();
    }

    ...

}
}

P.S。我有Visual Studio 2013

1 个答案:

答案 0 :(得分:0)

我已经解决了这个问题。我开始了新项目并开始测试。几个小时后,我发现了几件事。 1.项目必须在不同的组件中,但它们可以在一个解决方案中。我不知道为什么CLR在同一个程序集中无法加载类型。 2.从1开始 - 除主项目外的所有项目必须具有empty project类型。