2013-05-28 35 views
24

Tôi đang xây dựng một trang web sử dụng MVC4. Tôi thậm chí không thể bắt đầu rằng tôi có một lỗi lạ. Đây là mã của tôi:HttpConfiguration missing assembly

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 } 
      ); 
     } 
    } 
} 

Các thông báo lỗi: Loại hoặc tên của assembly 'HttpConfiguration' không tồn tại trong không gian tên 'System.Web.Http' (là bạn thiếu một chỉ thị sử dụng hoặc tham khảo một hội ?)

Nó cũng không nhận ra trường chỉ đọc RouteParameter. Nó xảy ra với tôi rằng nó có thể có một cái gì đó để làm với phiên bản, dll System.Web của tôi là phiên bản 4.0.0.0.

Một mảnh thông tin bổ sung là khi tôi gõ "sử dụng System.Web.", Intellisense DOES nhận dll .Http

TUY NHIÊN, trong các mã, nó không nhận ra bất kỳ các thông số của nó.

+1

Lệnh 'HttpConfiguration' lớp là trong' thư viện System.Web.Http'. – Jay

+1

Có, và mã cho thấy nó đang sử dụng System.Web.Http. Tuy nhiên nó không nhận ra HttpConfiguration (NOR DOES IT RECOGNIZE RouteParameter) – Soph

+2

assembly 'System.Web' chứa các lớp trong không gian tên System.Web.Http, đó là lý do tại sao bạn không thấy lỗi ở đó, tuy nhiên lớp' HttpConfiguration' nằm trong tập hợp 'System.Web.Http', không phải là' System.Web'. Bạn có thể xác minh bạn có cả hai hội đồng tham chiếu? – Jay

Trả lời

24

Tôi đã giải quyết. Vấn đề là, khi tôi tạo trang web, tôi đã cập nhật tất cả các gói thông qua Nuget. Tuy nhiên, vì tôi sẽ không sử dụng Entity Framework, tôi đã gỡ cài đặt nó. Để có thể gỡ bỏ cài đặt gói đó, nó cần thiết cho tôi để gỡ bỏ cài đặt Microsoft.AspNet.Providers.Core 1.2 là tốt ... và tôi đã làm.

Gói bị thiếu này đã làm hỏng mọi thứ. Tôi đã xóa dự án và bắt đầu lại từ đầu. Tôi cũng có thể sử dụng lệnh Update-Package trong PM Console và có thể khôi phục tất cả các gói bị mất. Tuy nhiên, kể từ khi tôi đã làm rất nhiều mớ hỗn độn so với công việc nhỏ (bên cạnh null) tôi đã làm, tôi quyết định bắt đầu lại từ đầu.

Cảm ơn bạn!

+10

Giải pháp này đã cho tôi nửa chừng ở đó ... cần thiết để thực hiện một 'Gói cài đặt Microsoft.AspNet.WebApi.Core' mới sau khi cập nhật các gói để cuối cùng giải quyết. – Kanapolis

+0

Gói cài đặt mới Microsoft.AspNet.WebApi.Cũng đã giải quyết được sự cố cho tôi. Cảm ơn @Kanapolis –

+0

nếu bạn thất bại với lỗi như 'install.ps1 không thể tải được vì chạy tập lệnh bị tắt trên hệ thống này' khi cài đặt gói này, hãy chạy lệnh này trong Powershell:' ExecutionPolicy Unrestricted -Scope CurrentUser' và sau đó sử dụng lệnh này trong giao diện điều khiển gói quản lý: 'Cập nhật-Gói-cài đặt Microsoft.AspNet.WebApi.Core' – eFarzad

1

Chúng tôi đã bắt đầu gặp sự cố này trên một trong các dự án của chúng tôi kể từ tuần trước. Dự án đã được xây dựng tốt 2 tuần trước đây & sau đó tất cả của một bất ngờ bắt đầu ném ra ngoại lệ này. Không có thay đổi nào được thực hiện trong các gói nuget cho dự án này. Ngay cả khi kiểm tra một phiên bản cũ hơn từ SVN đã không dẫn đến việc xây dựng thành công.

Hết sức tuyệt vọng, chúng tôi đã nâng cấp giải pháp từ VS2012 lên VS2013 & và xem, nó được xây dựng! Chúng tôi nghi ngờ, nhưng không thể xác nhận, rằng bản cập nhật công cụ được thực hiện trong Visual Studio 2013 đã ảnh hưởng đến thư viện này trong Visual Studio 2012.

Điều này có thể không hiệu quả, nhưng có một tùy chọn để nâng cấp giải pháp để giải quyết vấn đề.

1

Đảm bảo bạn biên dịch cho Framework 4.5 và không 4.0. Điều đó giải quyết được vấn đề cho tôi

2

Đối với những người khác phải đối mặt với vấn đề này, giải pháp của tôi là khác nhau. Thứ nhất tôi đã hạ một dự án từ .net 4.5 NET 4.0, nhưng các triệu chứng là tương tự như trên:

Loại hoặc tên của assembly 'HttpConfiguration' không tồn tại trong không gian tên 'System. Web.Http '(bạn có thiếu chỉ thị sử dụng hoặc tham chiếu lắp ráp không?)

tôi stumbled trên một bài đăng blog mà giải thích rằng có một mối liên hệ giữa Newtonsoft.JsonHttpConfiguration, tôi loại bỏ các tham chiếu đến Newtonsoft.Json từ dự án và các tập tin packages.config sau đó cài đặt lại Newtonsoft.Json từ người quản lý gói giao diện điều khiển:

Install-Package Newtonsoft.Json 

Tôi không thể gỡ cài đặt Newtonsoft.Json khỏi bảng điều khiển quản lý gói do các phụ thuộc khác, do đó cần phải loại bỏ tham chiếu theo cách thủ công.

Đây là liên kết đến bài viết: Newtonsoft.Json Hidden Dependencny on HttpConfiguration Breaks Compilation

+3

Thay vì xóa mọi thứ theo cách thủ công, cài đặt lại gói từ Nuget Console: Cập nhật-Gói –cài đặt Newtonsoft.Json – Riga

0

Một trường hợp khác. Tôi chấp nhận rằng điều này chỉ liên quan một cách lỏng lẻo đến câu hỏi vì tôi hoàn toàn là API Web. Tuy nhiên tìm kiếm của tôi đã dẫn tôi đến đây ...

Tôi đã có một dự án hiện có trong giải pháp nhắm mục tiêu Khung 4.5.2.

Khi tôi thêm một dự án mới, nó đã ở mức 4.5 vì tôi không chú ý đủ. HttpConfiguration hợp lệ biến mất khỏi phương thức đăng ký API Web.

Thay đổi mục tiêu thành 4.5.2 giải quyết vấn đề HttpConfiguration. Tâm trí bạn nó cũng gây ra một số đau buồn khác với RouteParameter: bây giờ tôi đã có hai định nghĩa, một trong System.Web.Http và một trong System.Web.UI.WebControls. Dễ dàng, tôi đoán vậy.

Cảm giác của tôi là có nhiều đến thế này ...

2

1.In Solution Explorer, nhấn phải chuột lên nút dự án và nhấp vào Add Reference.

2. Trong hộp thoại Thêm tài liệu tham khảo, hãy chọn tab Hội đồng. Và nhập “system.web.http” vào hộp tìm kiếm ở góc trên bên phải.

3.Chọn các thành phần bạn muốn tham chiếu, nếu nó đã được chọn trước trước tiên hãy xóa tham chiếu hơn ** lần nữa Thêm tham chiếu.

Tạo lại dự án. Xin vui lòng cho tôi biết nếu nó hoạt động. Cảm ơn bạn.

+0

Tôi đã ở .NET 4.5 và cài đặt lại Newtonsoft.Json nhưng không có gì hoạt động, ngoại trừ cái này. Tôi không biết làm thế nào tôi mất tham chiếu đó, cảm ơn! –

1

khi bạn cập nhật và cài đặt lại tất cả các gói AspNet từ Nuget và dường như không có giải pháp thích hợp - khởi động lại Visual Studio đã lưu tôi.

2

Tôi gặp phải lỗi này khi sao chép một ứng dụng MVC 4.0 trước đó đã làm việc cho tôi. Vấn đề của tôi là gói Microsoft.Net.Http NuGet không được khôi phục đúng cách. Tôi giải quyết nó từ NuGet console:

Update-Package -reinstall Microsoft.Net.Http

Các vấn đề liên quan