2014-08-27 54 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