Thiếu lớp khởi động OWIN


226

Tôi đang gặp lỗi này vì dự án của tôi không thể tìm thấy tài liệu tham khảo cho OWINlớp khởi động. Tôi thậm chí đã cài đặt tất cả các gói tham chiếu OWIN thông qua Nuget vẫn gặp vấn đề tương tự. Tôi đang sử dụng Visual Studio 2012MVC4.

Các lỗi sau đây xảy ra trong khi cố gắng tải ứng dụng.

  • Không tìm thấy hội đồng nào chứa OwinStartupAttribution.
  • Không tìm thấy hội đồng nào chứa một lớp Khởi động hoặc [Hội đồng Tên] .Startup. Để tắt phát hiện khởi động OWIN, hãy thêm ứng dụng Cài đặt: AutomaticAppStartup với giá trị "false" trong web.config. Để chỉ định Hội đồng, Lớp hoặc Phương thức khởi động OWIN, hãy thêm phần bổ trợ của ứng dụng: AppStartup với lớp khởi động đủ điều kiện hoặc tên phương thức cấu hình trong web.config.

7
Bạn có một Startup.csdự án?
christiandev

4
Liệu lắp ráp của bạn có chứa một OwinStartupAttribute? Tập hợp của bạn một Startuphoặc một [AssemblyName].Startuplớp? Bạn đã vô hiệu hóa khám phá khởi động OWIN, bằng cách thêm ứng dụng Cài đặt owin:AutomaticAppStartupvới giá trị "sai" trong web.config của bạn? Bạn đã thực hiện một trong những điều này và tự hỏi tại sao nó không hoạt động? Câu hỏi của bạn là gì?
ta.speot.is

1
Đó là điều. Nó không hiển thị lớp Khởi động OWIN khi tôi cố gắng thêm Mục mới trong dự án của mình. Tôi đã tìm kiếm trên google, nó nói thêm các tham chiếu OWIN thông qua các nugets và tôi cũng làm như vậy. Vẫn không nhận được Class để thêm.
Krunal Patil

Câu trả lời:


213

Tạo một lớp với tên khởi động này sẽ giúp bạn ..

public class Startup
{
   public void Configuration(IAppBuilder app)
   {
      app.MapSignalR();
   }
}

116
Ngoài ra, nếu lớp khởi động của bạn bằng cách nào đó không có trong không gian tên mặc định của bạn, hãy thêm một dòng cấu hình web vào <appSettings>khu vực như:<add key="owin:AppStartup" value="[NameSpace].Startup" />
Andrew Gray

7
Hiện nay, có 3 cách để tinh chỉnh owin: asp.net/aspnet/overview/owin-and-katana/...
Jaider

22
Ngoài nhận xét của @ andrew-grey, đưa [assembly:OwinStartupAttribute(typeof(Identity_Test.Startup))]vào AssemblyInfo.cscũng sẽ hoạt động.
Achilles

14
bạn cũng cần gói Microsoft.Owin.Host.SystemWeb nếu không Startup không được gọi
rjlopes

7
Chúng tôi cũng có thể thêm dòng này ngay trước không gian tên của lớp Khởi nghiệp: [assembly: OwinStartup(typeof([YourStartupNamespaceName].Startup))]
Minh Nguyễn

194

Trong dự án của chúng tôi, chúng tôi không cần chức năng OWIN, vì vậy chúng tôi đã xóa tất cả các tham chiếu owin khỏi dự án mẫu ASP.NET MVC ban đầu. Vấn đề xảy ra sau khi loại bỏ lớp khởi động OWIN.

Vấn đề là dll owin thêm trong thư mục bin của tôi. Khi tôi xóa chúng, vấn đề đã được giải quyết. Bạn nên xóa chúng bằng cách xóa thư mục bin. Clean Solution không xóa các dll này.

Bằng cách nào đó, IIS vẫn thực thi dll của OWIN khi chúng nằm trong thư mục bin.


6
Tôi cũng gặp vấn đề này và cũng phải đảm bảo rằng Tài liệu tham khảo không tham chiếu bất kỳ DLL nào của OWIN.
hacker

2
Cùng một vấn đề và cùng một giải pháp. Tuy nhiên trong trường hợp của tôi, tôi đã có một nhánh mã với Signalr và một nhánh không có. Khi chuyển nhánh, các tín hiệu dll vẫn duy trì ngay cả sau khi làm sạch. Tôi cần phải xóa chúng bằng tay.
Kywillis

3
Chỉ cần một lưu ý để nói điều này theo nghĩa đen có nghĩa là thư mục bin không chỉ sử dụng "Giải pháp sạch" từ Visual Studio mà trong trường hợp của tôi là xóa hầu hết các DLL nhưng không phải tất cả.
Alan Macdonald

1
Một cái gì đó hoạt động với tôi, là sau khi xóa các tham chiếu OWIN và nó vẫn không hoạt động chính xác là thêm vào <add key="owin:AutomaticAppStartup" value="false"/>như một ứng dụng. Chỉ cần một số lời khuyên cho những người đang thử điều này và nó vẫn không thành công.
LatentDenis

1
Đối với những người không làm việc này, hãy đảm bảo rằng ngay cả sau khi bạn đã xóa các thư mục bin mà bạn đi vào tài liệu tham khảo dự án và xóa tham chiếu đến dll của Owin. Trong trường hợp của tôi, tôi đã xóa các thư mục bin nhưng quên rằng tôi vẫn còn các tham chiếu (không sử dụng) trong tệp .csproj.
akousmata

104

Trên Visual Studio 2013 RC2, có một mẫu cho việc này. Chỉ cần thêm nó vào thư mục App_Start.

nhập mô tả hình ảnh ở đây

Mẫu tạo ra một lớp như vậy:

using System;
using System.Threading.Tasks;
using Microsoft.Owin;
using Owin;

[assembly: OwinStartup(typeof(WebApiOsp.App_Start.Startup))]

namespace WebApiOsp.App_Start
{
    public class Startup
    {
        public void Configuration(IAppBuilder app)
        {
            // For more information on how to configure your application, visit http://go.microsoft.com/fwlink/?LinkID=316888
        }
    }
}

3
VS2015 cần thiết này là tốt
Tom Stickel

2
Điều này đã làm điều đó cho tôi - Tôi đã tạo tệp Startup.cs và điền chính xác nhưng bỏ lỡ rằng nó cần phải có trong thư mục App_Start. Chạy tốt trên máy dev của tôi, nhưng một khi đã xuất bản thì bị lỗi. Cảm ơn!
Jon Peterson

Nhớ thêm app.MapSignalR (); trong Cấu hình (ứng dụng IAppBuilder), 404 khác được trả về khi gọi [YourSite] / signalr
Kasper Halvas Jensen

45

Nếu bạn không muốn sử dụng khởi động OWIN, đây là những gì bạn nên thêm vào tệp web.config :

Trong AppSinstall, thêm dòng sau:

    <add key="owin:AutomaticAppStartup" value="false" />

Đây là cách nó sẽ trông giống như trong web.config của bạn:

  <appSettings>
    <add key="owin:AutomaticAppStartup" value="false" />
  </appSettings>

1
Đây thực sự là một trong những câu trả lời đầy đủ. Nếu bạn không thích cài đặt web.config, thật khó để biết rằng bạn nên thêm khóagiá trị trong tệp xml
makoshichi

25

Hãy xem Startup.cstập tin, bạn có thể đang thiếu một trong số này. Tệp này là điểm vào của OWIN, vì vậy có vẻ như điều này bị thiếu. Hãy nhìn vào OWIN Startup classđây để hiểu những gì đang xảy ra.

Khi lỗi của bạn chỉ định, bạn có thể vô hiệu hóa điều này trong web.config bằng cách thực hiện ...

Để tắt khám phá khởi động OWIN, hãy thêm ứng dụng Cài đặt nợ: AutomaticAppStartup với giá trị "false" trong web.config của bạn


5
Tôi đã thêm <add key="owin:AutomaticAppStartup" value="false" />vào <appSettings>nhóm và Startup.cs đã không còn cần thiết.
giun web

@webworm, tôi đề cập ở trên.
christiandev

2
@christiandev chính xác sẽ <add key="owin:AutomaticAppStartup" value="false" />làm gì? Nó sẽ vô hiệu hóa bất kỳ chức năng? Chúng ta có cần khởi động ứng dụng sau để có thể sử dụng bất kỳ chức năng OWIN nào không?
Flo

18

Trước tiên, bạn phải tạo tệp khởi động của mình và sau đó bạn phải chỉ định ngôn ngữ của tệp này trong web.config, bên trong thẻ appSinstall với dòng này:

<add key="owin:AppStartup" value="[NameSpace].Startup"/>

Nó giải quyết vấn đề của tôi.


11

Tôi đã gặp vấn đề này, hiểu rằng đây không phải là vấn đề sai trong trường hợp của OP, nhưng trong trường hợp của tôi, tôi đã có một lớp Khởi động, nó chỉ không tìm thấy nó theo mặc định.

Vấn đề của tôi là tôi có khoảng trắng trong Tên hội của mình và do đó không gian tên mặc định khác với tên tập hợp, do đó không gian tên cho lớp khởi động khác với tên tập hợp.

Như lỗi cho thấy, theo quy ước, nó tìm kiếm [Tên hội]. Khởi động cho lớp ... vì vậy hãy chắc chắn không gian tên cho lớp Khởi động của bạn giống với tên hội. Đã khắc phục sự cố cho tôi.


1
Tôi đã có một vấn đề tương tự. Tên dự án của tôi có dấu gạch nối '-' trong đó, được chuyển đổi thành gạch dưới bởi VS, vì vậy không gian tên và lớp khởi động về cơ bản là khác nhau.
LDJ

7

Tôi đã thử hầu hết các bản sửa lỗi được đề xuất ở đây và vẫn không thể tránh được thông báo lỗi. Cuối cùng tôi đã thực hiện kết hợp một vài giải pháp được đề xuất:

  1. Đã thêm mục này vào đầu AppSettingsphần của web.config :

    <add key="owin:AutomaticAppStartup" value="false"/>

  2. Mở rộng nút Tham chiếu của dự án của tôi và xóa mọi thứ có chứa chuỗi OWIN. (Tôi cảm thấy an toàn khi làm như vậy vì tổ chức của tôi không phải (và sẽ không) là nhà cung cấp OWIN hoạt động trong tương lai)

Sau đó tôi nhấp Runvà trang chủ của tôi được tải lên.


4

Trong trường hợp của tôi, tôi đã đổi tên dự án và thay đổi cấu trúc thư mục. Tôi thấy rằng việc cập nhật RootNameSpace và AssociationName trong tệp .csproj trong đó lỗi được đưa ra đã khắc phục lỗi. Nếu bạn đã sửa đổi đường dẫn của dự án, tôi cũng khuyên bạn nên kiểm tra điều này.

<RootNamespace>Company.Product.WebAPI</RootNamespace>
<AssemblyName>Company.Product.WebAPI</AssemblyName>

Kudos bò thần thánh cho bạn, đã bị mắc kẹt trên đó như mãi mãi và không tìm thấy giải pháp nào cho đến khi tôi đọc nó, Hội đồng Tên không được cập nhật sau khi tôi thay đổi bằng tay. Bây giờ nó hoạt động! Cảm ơn bạn rất nhiều!
Mason

3

Trường hợp của tôi? Tôi đã có tập tin khởi động, nhưng nó được loại trừ trong dự án. Tôi chỉ bao gồm nó và lỗi còn lại.


3

Điều này có thể phải đối mặt trong Visual Studio 2015 cũng như khi bạn sử dụng Azure AD với dự án MVC. Ở đây, nó tạo tệp khởi động là Startup.Auth.cs trong thư mục App_Start nhưng nó sẽ bị thiếu

[assembly: OwinStartup(typeof(MyWebApp.Startup))]

Vì vậy, thêm nó và bạn nên đi. Điều này đi trước khi không gian tên bắt đầu.


2

Cũng có thể có ngoại lệ này (ngay cả khi bạn có lớp khởi động được cấu hình đúng) nếu chạy qua IIS Express và thư mục ảo của bạn không được cấu hình đúng.

Khi tôi gặp phải vấn đề này, độ phân giải chỉ đơn giản là nhấn nút 'Tạo thư mục ảo' trong tab 'Web' của thuộc tính dự án (Sử dụng Visual Studio 2013)


2

Bạn có thực sự đang cố gắng thêm OWIN vào dự án của mình hay đây là điều bất ngờ?

  1. Trong trường hợp bạn muốn thêm OWIN, thêm một lớp Khởi động là cách tốt nhất.

  2. Trong trường hợp bạn không cần bất kỳ tài liệu tham khảo nào về Owin :

    xóa Owin.dll khỏi thư mục / bin của bạn .

    Owin.dll là người cố gắng xác định lớp Khởi động.


1

Trong khi tôi không thể giải thích đầy đủ lý do tại sao điều này giải quyết vấn đề cho tôi, tôi đã gặp phải một vấn đề như thế này sau khi tôi thay đổi dự án API của mình để xây dựng thành các thư mục \debug\releasethư mục riêng biệt . Khi tôi hoàn nguyên thay đổi đó để xây dựng thành một \binthư mục, mọi thứ bắt đầu hoạt động.

Tôi đã viết lên kinh nghiệm của mình ở đây: Không thể chạy lớp Khởi động OWIN để chạy trong IIS Express sau khi đổi tên tệp dự án ASP.NET


1

Tôi gặp vấn đề này sau khi thử nghiệm với SignalR và sau đó loại bỏ nó khỏi dự án. Để giải quyết tôi phải xóa nội dung của thư mục bin cho trang web trên máy chủ từ xa và sau đó xuất bản lại.


1

Chỉ cần kiểm tra xem packages.configtệp của bạn đã được kiểm tra chưa (khi bị loại trừ, sẽ có biểu tượng không có mục màu đỏ hiển thị trong trình thám hiểm). Đối với một số lý do kỳ lạ của tôi đã bị loại trừ và gây ra vấn đề này.


0

Tôi liên tục gặp lỗi tương tự khi tôi bắt đầu dự án của mình bằng Bảng điều khiển liên kết trình duyệt trong VS2013. Nhưng, khi tôi chạy dự án của mình ở chế độ gỡ lỗi, nó sẽ hoạt động. Tôi không thể hiểu tại sao và làm thế nào để Bảng điều khiển liên kết trình duyệt hoạt động. Tôi đã kiểm tra tệp khởi động, nó vẫn ổn, thêm dòng cài đặt ứng dụng như được mô tả trong một số câu trả lời "", nhưng không có gì hoạt động.

Rõ ràng, những gì tôi đã làm sai là nhấp vào liên kết SAU trong Bảng điều khiển trình duyệt. Tất cả các liên kết dự án Giải pháp hiển thị trong Bảng điều khiển Trình duyệt, nhưng chỉ liên kết các dự án khởi động hoạt động. Bạn cần nhấp vào liên kết của dự án khởi động.

Ví dụ: Tôi có 2 dự án, cả hai dự án đều hiển thị trong Bảng điều khiển trình duyệt, nhưng chỉ có một dự án được đánh dấu là dự án khởi động sẽ hoạt động (hiển thị đậm trong Solution Explorer.) Tôi nghĩ rằng điều này có thể giúp ai đó làm điều hiển nhiên, nó làm tôi tốn 2 ngày để vấp ngã cho rõ ràng.


0

Tôi gặp vấn đề này khi tôi nhận được bản mới nhất trên TFS trong khi các dự án khác được mở trong nhiều phiên bản của VS. Tôi đã có tất cả các bản sửa lỗi ở trên. Mở lại VS đã khắc phục sự cố.


0

Trong trường hợp của tôi, tôi đã đăng nhập vào máy chủ ftp. Đã sao lưu các tập tin hiện tại trên máy chủ ftp. Xóa tất cả các tệp theo cách thủ công từ máy chủ ftp. Giải pháp sạch, triển khai lại mã. Nó đã làm việc.

Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.