2014-08-27 46 views
0

我正在尝试编写代码,它将从web api动作的当前请求中抓取一个文件,然后将该文件保存到服务器。此代码位于与主Web api项目分离的自己的项目中。当代码运行我得到这个错误:从外部代码抓取当前web api请求

Could not load file or assembly 'System.Web.Http, Version=4.0.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35' or one of its dependencies. The located assembly's manifest definition does not match the assembly reference. (Exception from HRESULT: 0x80131040)

这是在自己的项目中的代码应该捕获请求:

public class Upload<T> where T : HttpRequestMessage 
{ 
    private readonly T _req; 
    // Constructor 
    public Upload() 
    { 

    } 

    public Upload(T t) 
    { 
     _req = t; 
    } 

// METHODS 
    public async Task<HttpResponseMessage> SingleFile(string dirName, string typeDir) 
    { 
     // check request 

     if (!_req.Content.IsMimeMultipartContent()) 
     { 
      return _req.CreateResponse(HttpStatusCode.UnsupportedMediaType); 
     } 

     // More code etc. 
    } 
} 

这是从主网页API项目中调用代码:

[HttpPost] 
    public HttpResponseMessage CreateProduct() 
    { 
     var up = new FileTools.Upload<HttpRequestMessage>(this.Request); 
     var message = up.SingleFile("test", "mytestDir"); // error appears here 

     return message.Result; 
    } 

回答

3

它看起来像你的项目,包含你的上传类是引用一个不同的版本的System.Web.Http比你的Web应用程序。检查您的参考,以确保它们参考相同的组件。

+0

你是对的。属性选项卡显示运行时版本似乎相同,但属性选项卡最底部的版本号不同。我最终不得不将web api 2.2 nuget包导入到单独的项目中,以获得与之匹配的版本号。 – user1206480 2014-08-28 01:53:13