笔记-多Web项目,未能加载文件错误

来源:互联网 发布:windows pe干什么用的 编辑:程序博客网 时间:2024/06/05 10:25

(把Onenote中的笔记搬上来)

在解决方案中建立了两个Web项目(未相互依赖)

Lc.Web(设为启动项目)

Lc.Frontend

其中Lc.Web设为启动项目

F5启动执行的状态下两个项目均会启动,访问未设为启动项目Lc.Frontend的项目时会报以下错误:

1未能加载文件或程序集“System.Net.Http.Formatting”或它的某一个依赖项。找到的程序集清单定义与程序集引用不匹配。(异常来自 HRESULT:0x80131040)

反过来,设Lc.Frontend为启动项目时,访问Lc.Web,会报以下错误:

2未能加载文件或程序集“System.Web.Http”或它的某一个依赖项

 

原因:

根据之前 RabbitMQ.Client 未能加载文件或程序集的问题处理方案分析,原因应该是两个项目依赖或兼容的程序集版本不一造成的。

结果:

问题1

原因是Lc.Frontend项目中依赖程序集Newtonsoft.Json绑定的最新版本为6.0.0.0

 web.config中

     <dependentAssembly>
        <assemblyIdentity name="Newtonsoft.Json" culture="neutral" publicKeyToken="30ad4fe6b2a6aeed" />
        <bindingRedirect oldVersion="0.0.0.0-6.0.0.0" newVersion="6.0.0.0" />   这里问题,当同还有引用程序集文问题
      </dependentAssembly>

而在Lc.Web最新版本为 8.0.0.0

因此当以 Lc.Web为启动项目时,Asp.net临时生成文件以Lc.Web为主,

而所有启动项目会从临时生成文件夹(..\Temporary ASP.NET Files)中获取程序集,

因此版本低的Lc.Frontend会报错。

问题2

原因是 Lc.Web项目中包含了Asp.net Web Api 的程序集,因此会包含 System.Web.Http

但是Lc.Frontend项目未包含Asp.net Web Api的程序集,因此不包含 System.Web.http

当以 Lc.Frontend项目为启动项时,临时生成文件以该项目程序集生成,缺少了 System.Web.http

因此访问 Lc.Web时会报未加截System.Web.Http错误。

解决方案:

A

更改Lc.Frontend项目依赖Newtonsoft.Json绑定的最新版本(通过程序包管理更新 Newtonsoft.Json程序集为8.0.0.0)与 Lc.Web相同

仅以 Lc.Web 为启动项目,启动时两个项目均可访问。

问题解决完成。

B

更改Lc.Frontend项目依赖Newtonsoft.Json绑定的最新版本与 Lc.Web相同

相互设置项目生成依赖(设置Lc.Frontend的项目生成顺序中勾上Lc.Web),则任何一个项目设为启动时,两个项目均可访问。

问题解决完成。

±üIlF Lc.Frontend EntiwFramework.Engine Lc.Core Lc.Data Lc.Plugin.SmsZtsms 0k Lc.Serdices Lc.Web.Fakes Lc.Web.Framework


 

附:Temporary ASP.NETFiles 文件夹中保存的是什么内容 http://blog.csdn.net/kirawoo/article/details/41038403


 

阅读全文
0 0
原创粉丝点击