您的位置:首页 > 其它

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

2017-07-12 11:16 267 查看
(把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),则任何一个项目设为启动时,两个项目均可访问。
问题解决完成。



附:Temporary ASP.NETFiles 文件夹中保存的是什么内容 http://blog.csdn.net/kirawoo/article/details/41038403
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
相关文章推荐