2013-05-28 107 views
24

我正在使用MVC4構建網站。我甚至無法開始我有一個奇怪的錯誤。這是我的代碼:HttpConfiguration缺少程序集

using System; 
using System.Collections.Generic; 
using System.Linq; 
using System.Web.Http; 

namespace MyProject 
{ 
    public static class WebApiConfig 
    { 
     public static void Register(HttpConfiguration config) 
     { 
      config.Routes.MapHttpRoute(
       name: "DefaultApi", 
       routeTemplate: "api/{controller}/{id}", 
       defaults: new { id = RouteParameter.Optional } 
      ); 
     } 
    } 
} 

的錯誤消息:程序集「HttpConfiguration」在命名空間中不存在的類型或名稱「System.Web.Http」(是否缺少using指令或程序集引用?)

它也不會承認只讀字段RouteParameter。它發生在我身上,它可能與版本有關,我的System.Web dll版本是4.0.0.0。

另一附加一條信息是,當I型「使用的System.Web。」,智能感知識別.Http DLL

然而,在代碼,它不識別任何它的參數。

+1

的'HttpConfiguration'類是'System.Web.Http'庫。 – Jay

+1

是的,代碼顯示它使用System.Web.Http。但它不識別HttpConfiguration(也不知道它是否識別RouteParameter) – Soph

+2

'System.Web'程序集包含System.Web.Http命名空間中的類,這就是爲什麼你在那裏看不到錯誤,但是'HttpConfiguration'類在'System.Web.Http'程序集中,而不是'System.Web'。你可以驗證你有兩個程序集引用? – Jay

回答

24

我解決它。問題是,當我創建網站時,我通過Nuget更新了所有包。但是,因爲我不打算使用實體框架,所以我卸載了它。爲了能夠卸載該軟件包,它需要我卸載Microsoft.AspNet.Providers.Core 1.2以及...我做到了。

這丟失的包把事情搞亂。我清理了這個項目並重新開始。我也可以在PM控制檯中使用Update-Package命令,並可以恢復所有丟失的軟件包。然而,由於我做了很多工作,而我做了一些小工作(接近零工),所以我決定重新開始。

無論如何,謝謝!

+10

這個解決方案讓我在那裏得到了一半......在更新軟件包以最終解決問題之後,需要執行全新的「Install-Package Microsoft.AspNet.WebApi.Core」。 – Kanapolis

+0

全新的安裝包Microsoft.AspNet.WebApi.Core也爲我解決了這個問題。謝謝@Kanapolis –

+0

如果因爲'install.ps1無法加載,因爲在安裝此軟件包時禁用了此係統上的運行腳本'等錯誤而失敗,請在Powershell中運行此命令:'ExecutionPolicy Unrestricted -Scope CurrentUser',然後使用此命令在包管理器控制檯中:'Update-Package -reinstall Microsoft.AspNet.WebApi.Core' – eFarzad

1

我們開始我們自上週以來的一個項目遇到此問題。這個項目在2周前正在建設中,然後突然開始拋出這個異常。這個項目的nuget包中沒有做任何更改。即使從SVN中檢出較舊的版本也不會導致成功構建。

出於絕望,我們從VS2012的解決方案升級到VS2013 &你瞧,它內置了!我們懷疑但無法確認在Visual Studio 2013中完成的工具更新已在Visual Studio 2012中影響此庫。

這可能不適用於所有,但有一個選項可用於升級解決方案,這似乎是解決問題。

1

確保您編譯框架4.5和4.0不。這解決了我的問題

2

對於其他面臨此問題,我的解決方案是不同的。首先我是從.NET 4.5降級了一個項目,.NET 4.0,但症狀都與上面相同:

大會「HttpConfiguration」的類型或名稱不 命名空間「系統存在。 Web.Http'(你是否缺少一個使用指令或 程序集引用?)

我碰到一個博客文章對此解釋稱有Newtonsoft.JsonHttpConfiguration之間的聯繫迷迷糊糊的,我從項目中刪除提及Newtonsoft.Jsonpackages.config文件,然後重新安裝了包管理器控制檯Newtonsoft.Json

Install-Package Newtonsoft.Json 

由於其他依賴性,我無法從軟件包管理控制檯卸載Newtonsoft.Json,因此需要手動刪除引用。

下面是文章鏈接:Newtonsoft.Json Hidden Dependencny on HttpConfiguration Breaks Compilation

+3

而不是手動刪除東西,從Nuget控制檯重新安裝包:Update-Package -reinstall Newtonsoft.Json – Riga

0

另一個場景。我接受這只是與問題鬆散相關,因爲我純粹是Web API。然而我的搜索引導我在這裏所以...

我有一個在面向Framework 4.5.2的解決方案中的現有項目。

當我添加一個新項目時,它進入4.5,因爲我沒有給予足夠的關注。 HttpConfiguration從Web API Register方法中正式消失。

將目標更改爲4.5.2解決了HttpConfiguration問題。請注意,它還引起了RouteParameter的其他一些問題:現在我有兩個定義,一個在System.Web.Http中,另一個在System.Web.UI.WebControls中。我覺得很簡單。

我的感覺是,有更多的這個...

2

1.In Solution Explorer中,右鍵單擊該項目節點,然後單擊添加引用。

2.在Add Reference對話框中,選擇Assemblies選項卡。然後在右上角的搜索框中輸入「system.web.http」。

3.選擇要引用的組件,如果已經選擇了比先選擇的引用而不是**再次添加引用。

重新構建項目。請讓我知道它是否有效。謝謝。

+0

我已經在.NET 4.5並重新安裝Newtonsoft.Json,但沒有任何作品,除了這一個。我不知道我是如何失去這個參考的,謝謝! –

1

當您更新並重新安裝了Nuget的所有AspNet軟件包時,似乎沒有合適的解決方案 - 重新啓動Visual Studio救了我。

2

我在克隆以前爲我工作的MVC 4.0應用程序時遇到此錯誤。我的問題是Microsoft.Net.Http NuGet軟件包無法正常恢復。我解決了它從控制檯的NuGet:

Update-Package -reinstall Microsoft.Net.Http