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

(把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
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值