2015-01-02 26 views
7

Tôi có một trang web được lưu trữ trên web Api và tôi đang cố gắng sử dụng một trường hợp EF Ngữ cảnh cho mỗi Yêu cầu Owin. Đây là mã cấu hình của tôi cho lớp khởi động.Tại sao tôi nhận được "Không thể phân giải biểu tượng 'CreatePerOwinContext'"?

public void Configuration(IAppBuilder app) 
{   
    app.CreatePerOwinContext(A3Context.Create); 
} 

Điều này sẽ không xây dựng vì tôi gặp lỗi sau.

Lỗi

5 'Owin.IAppBuilder' không chứa một định nghĩa cho 'CreatePerOwinContext' và không có phương pháp mở rộng 'CreatePerOwinContext' chấp nhận một cuộc tranh luận đầu tiên của loại 'Owin.IAppBuilder' có thể được tìm thấy (bạn có thiếu chỉ thị sử dụng hoặc tham chiếu lắp ráp không?)

Tôi thiếu một tham chiếu mà tôi không biết?

+0

vấn đề tương tự? http://stackoverflow.com/questions/23057459/owin-iappbuilder-does-not-contain-a-definition-for-mapsignalr – Loathing

+0

Tôi không nghĩ vậy. Không có phiên bản nào tôi đang sử dụng phù hợp với những phiên bản được đề cập trong liên kết của bạn. –

Trả lời

16

CreatePerOwinContext là một phương pháp mở rộng trong gói Microsoft.AspNet.Identity.Owin NuGet.

Để giải quyết, gói mở quản lý giao diện điều khiển cho dự án của bạn và cài đặt bằng lệnh sau:

Install-Package Microsoft.AspNet.Identity.Owin 

Đảm bảo bạn đang tham chiếu không gian tên có chứa các phương pháp khuyến nông:

using Owin; 
+0

Lỗi tương tự nhưng .... "Web đã có tham chiếu đến 'Microsoft.AspNet.Identity.Owin 2.2.1'." –

+0

Resharper đã cho tôi tùy chọn để thêm một tham chiếu đến dll và nó hoạt động. Phải là một sự pha trộn trong dự án. –

+1

@IanWarburton - Vui vì bạn đã xóa nó. Lỗi đó có nghĩa là gói đã có trong packages.config cho dự án bạn đang chạy lệnh trên. Một điều cần lưu ý là nếu bạn có nhiều dự án, mỗi dự án gọi mã này cần phải có gói đó trong packages.config riêng của nó. Resharper sẽ không làm điều đó bit cho bạn, nó chỉ sao chép các tài liệu tham khảo DLL. Điều này có nghĩa là, khi thanh toán mới, nuget sẽ không khôi phục lại giải pháp cho trạng thái xây dựng. Nếu DLL có nó, bạn chỉ cần đảm bảo bạn có "sử dụng Owin;" không gian tên để truy cập vào phương thức mở rộng. – cchamberlain

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