2

我今天遇到了一个问题,这让我把头发拔了出来。

我创建了一个相当简单的 WCF 服务,因为它只公开两个操作并且没有数据协定。此 WCF 服务位于业务逻辑层之上。在这个业务逻辑层内部是一个 dll,它公开了一些合约(只是简单的接口)。

我还为该服务创建了两个测试客户端。一个是控制台客户端,另一个是 MVC4 应用程序。两者都引用相同的端点,并且它们都通过项目引用引用合同 dll。

现在,一切都很好,直到我通过添加或删除方法,甚至更改现有方法的签名来更改合同。那时我的 MVC4 应用程序到处乱飞。请记住,我不会更改 WCF 合同,只是更改一些内部合同。

原因是在业务逻辑层内部,我正在通过静态构造函数初始化我的 AutoMapper 配置文件。在这个静态构造函数中,我基本上得到了当前域的所有程序集并遍历它们以寻找实现 IProfile 的对象。当我开始尝试从引用合同 dll 的 dll 中获取类型时,我得到了一个致命异常:System.TypeLoadException。

现在,控制台客户端表现得很好。同样,通过项目引用引用相同的 dll。我可以整天更改合同 dll,它就像云雀一样高兴,但 MVC4 大打折扣。如果我回过头来让界面与 MVC4 满意之前的界面完全一样。

我注意到无法加载的程序集的路径位于临时 ASP.Net 文件位置。我炸毁了整个目录,但仍然没有运气。

我可以提供代码,但如果我给你一个依赖图可能会更好。BLL 中已经有大约 5k 行代码。

提前致谢。

4

0 回答 0