Kelas Startup OWIN Hilang

226

Saya mendapatkan kesalahan ini karena proyek saya tidak dapat menemukan referensi untuk OWINkelas startup. Saya bahkan telah menginstal semua paket referensi OWIN melalui Nuget masih mendapatkan masalah yang sama. Saya menggunakan Visual Studio 2012dan MVC4.

Kesalahan berikut terjadi saat mencoba memuat aplikasi.

  • Tidak ditemukan unit yang mengandung OwinStartupAttribute.
  • Tidak ada perakitan yang ditemukan mengandung kelas Startup atau [AssemblyName] .Startup. Untuk menonaktifkan penemuan startup OWIN, tambahkan appSetting owin: AutomaticAppStartup dengan nilai "false" di web.config Anda. Untuk menentukan Rakitan, Kelas, atau Metode startup OWIN, tambahkan pengaturanOwin: AppStartup dengan kelas startup yang lengkap atau nama metode konfigurasi di web.config Anda.
Krunal Patil
sumber
7
Apakah Anda memiliki Startup.csproyek?
christiandev
4
Apakah majelis Anda berisi OwinStartupAttribute? Apakah perakitan Anda Startupatau [AssemblyName].Startupkelas? Sudahkah Anda menonaktifkan penemuan startup OWIN, dengan menambahkan pengaturan aplikasi owin:AutomaticAppStartupdengan nilai "false" di web.config Anda? Pernahkah Anda melakukan salah satu dari hal-hal ini dan bertanya-tanya mengapa itu tidak berhasil? Apa pertanyaan Anda?
ta.speot.is
1
Itu masalahnya. Itu tidak menunjukkan kelas Startup OWIN ketika saya mencoba untuk menambahkan Item baru di proyek saya. Saya mencari di google katanya menambahkan Referensi OWIN melalui nugets dan saya melakukan hal yang sama. Masih belum mendapatkan Kelas untuk ditambahkan.
Krunal Patil

Jawaban:

213

Buat Satu Kelas Dengan Nama Startup ini akan membantu Anda ..

public class Startup
{
   public void Configuration(IAppBuilder app)
   {
      app.MapSignalR();
   }
}
kerupuk
sumber
116
Selain itu, jika kelas startup Anda entah bagaimana tidak ada di ruang nama default Anda, tambahkan baris konfigurasi web ke <appSettings>area seperti:<add key="owin:AppStartup" value="[NameSpace].Startup" />
Andrew Gray
7
Saat ini, ada 3 cara untuk mengkonfigurasi owin
Jaider
22
Selain komentar @ andrew-abu, menempatkan [assembly:OwinStartupAttribute(typeof(Identity_Test.Startup))]ke dalam AssemblyInfo.csakan bekerja juga.
Achilles
14
Anda juga memerlukan paket Microsoft.Owin.Host.SystemWeb jika tidak Startup tidak dipanggil
rjlopes
7
Kita juga bisa menambahkan baris ini tepat sebelum namespace dari kelas Startup: [assembly: OwinStartup(typeof([YourStartupNamespaceName].Startup))]
Minh Nguyen
194

Dalam proyek kami, kami tidak memerlukan fungsionalitas OWIN, jadi kami menghapus semua referensi owin dari proyek template ASP.NET MVC awal. Masalah terjadi setelah menghapus kelas startup OWIN.

Masalahnya adalah dll owin ekstra di folder bin saya. Ketika saya menghapusnya, masalahnya teratasi. Anda harus menghapusnya dengan menghapus folder tempat sampah. Clean Solution tidak menghapus dll ini.

Entah bagaimana, IIS masih mengeksekusi OWIN dll ketika mereka berada di folder bin.

Hüseyin Yağlı
sumber
6
Saya punya masalah ini juga dan juga harus memastikan Referensi tidak referensi OWIN DLL.
hacker
2
Masalah yang sama dan solusi yang sama. Namun dalam kasus saya, saya memiliki satu cabang kode dengan Signalr dan satu cabang tanpa. Ketika berpindah cabang, dll Signalr tetap ada bahkan setelah Bersih. Saya perlu menghapusnya secara manual.
Kywillis
3
Hanya catatan untuk mengatakan ini secara harfiah berarti folder bin tidak hanya menggunakan "Solusi Bersih" dari Visual Studio yang dalam kasus saya menghapus sebagian besar DLL tetapi tidak semua.
Alan Macdonald
1
Sesuatu yang bekerja untuk saya, adalah setelah menghapus referensi OWIN dan masih tidak berfungsi dengan baik ditambahkan <add key="owin:AutomaticAppStartup" value="false"/>sebagai pengaturan aplikasi. Hanya beberapa saran untuk orang yang mencoba ini dan itu masih belum berhasil.
LatentDenis
1
Untuk orang-orang yang ini tidak berhasil, pastikan bahwa bahkan setelah Anda menghapus folder tempat Anda masuk ke referensi proyek dan menghapus referensi ke Owin dll. Dalam kasus saya, saya menghapus folder bin tetapi lupa bahwa saya masih memiliki referensi (tidak terpakai) di file .csproj.
akousmata
104

Pada Visual Studio 2013 RC2, ada template untuk ini. Cukup tambahkan ke folder App_Start.

masukkan deskripsi gambar di sini

Templat menghasilkan kelas seperti itu:

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
        }
    }
}
Timuçin
sumber
3
VS2015 membutuhkan ini juga
Tom Stickel
2
Ini berhasil bagi saya - saya membuat file Startup.cs dan mengisinya dengan benar tetapi tidak perlu di folder App_Start. Berjalan baik-baik saja di mesin dev saya, tetapi setelah dipublikasikan ternyata error. Terima kasih!
Jon Peterson
Ingatlah untuk menambahkan app.MapSignalR (); dalam Konfigurasi (aplikasi IAppBuilder), kalau tidak 404 dikembalikan saat memanggil [YourSite] / signalr
Kasper Halvas Jensen
45

Jika Anda tidak ingin menggunakan startup OWIN, inilah yang harus Anda tambahkan ke file web.config Anda :

Di bawah AppSettings tambahkan baris berikut:

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

Ini akan terlihat seperti di web.config Anda:

  <appSettings>
    <add key="owin:AutomaticAppStartup" value="false" />
  </appSettings>
Yonatan Ayalon
sumber
1
Ini sebenarnya salah satu jawaban yang lengkap. Jika Anda tidak terlalu suka dengan pengaturan web.config, sulit untuk mengetahui bahwa Anda harus menambahkan kunci dan nilai dalam file xml
makoshichi
25

Coba lihat Startup.csfile tersebut, Anda mungkin kehilangan salah satu dari ini. File ini adalah titik masuk untuk OWIN, jadi sepertinya ini tidak ada. Lihatlah di OWIN Startup classsini untuk memahami apa yang sedang terjadi.

Saat kesalahan Anda menentukan, Anda dapat menonaktifkan ini di web.config dengan melakukan hal berikut ...

Untuk menonaktifkan penemuan startup OWIN, tambahkan appSetting owin: AutomaticAppStartup dengan nilai "false" di web.config Anda

christiandev
sumber
5
Saya menambahkan <add key="owin:AutomaticAppStartup" value="false" />ke <appSettings>grup dan Startup.cs tidak lagi diperlukan.
webworm
@webworm, saya sebutkan di atas.
christiandev
2
@christiandev apa yang sebenarnya akan <add key="owin:AutomaticAppStartup" value="false" />dilakukan? Apakah ini akan menonaktifkan fungsionalitas apa pun? Apakah kita perlu memulai aplikasi nanti untuk dapat menggunakan fungsionalitas OWIN?
Flo
18

Pertama, Anda harus membuat file startup Anda dan setelah Anda harus menentukan lokasi file ini di web.config, di dalam tag appSettings dengan baris ini:

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

Itu memecahkan masalah saya.

Slaters
sumber
11

Saya punya masalah ini, mengerti ini bukan apa yang salah dalam kasus OP, tetapi dalam kasus saya saya memang memiliki kelas Startup, hanya saja tidak menemukannya secara default.

Masalah saya adalah saya memiliki spasi di Nama Majelis saya, dan karenanya namespace default berbeda dari nama assembly, maka namespace untuk kelas startup berbeda dari nama assembly.

Seperti yang disarankan oleh kesalahan, berdasarkan konvensi ini mencari [Nama Majelis]. Mulai untuk kelas ... jadi pastikan namespace untuk kelas Startup Anda sama dengan nama Majelis. Memperbaiki masalah untuk saya.

TCC
sumber
1
Saya punya masalah serupa. Nama proyek saya memiliki tanda hubung '-' di dalamnya, yang dikonversi menjadi garis bawah oleh VS, jadi namespace dan kelas startup pada dasarnya berbeda.
LDJ
7

Saya mencoba sebagian besar perbaikan yang disarankan di sini, dan masih tidak dapat menghindari pesan kesalahan. Saya akhirnya melakukan kombinasi beberapa solusi yang disarankan:

  1. Menambahkan entri ini ke bagian atas web.configAppSettings saya :

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

  2. Memperluas simpul Referensi proyek saya dan menghapus semua yang berisi string OWIN. (Saya merasa aman melakukannya karena organisasi saya bukan (dan tidak akan) penyedia OWIN aktif di masa depan)

Saya kemudian mengklik Rundan beranda saya dimuat.

Jason Marsell
sumber
4

Dalam kasus saya, saya telah mengganti nama proyek dan mengubah struktur foldernya. Saya menemukan bahwa memperbarui RootNameSpace dan AssemblyName dalam file .csproj di mana kesalahan dilemparkan menyelesaikan kesalahan. Jika Anda telah memodifikasi jalur proyek Anda, saya sarankan untuk memeriksa ini juga.

<RootNamespace>Company.Product.WebAPI</RootNamespace>
<AssemblyName>Company.Product.WebAPI</AssemblyName>
Tidak dipelajari
sumber
Kudos sapi suci bagimu, terjebak di sana seperti selamanya dan tidak menemukan solusi sampai saya membaca ini, AssemblyName tidak diperbarui setelah saya mengubahnya secara manual. Sekarang berhasil! Terima kasih banyak!
Mason
3

Kasus saya? Saya punya file startup, tetapi tidak termasuk dalam proyek. Saya baru saja memasukkannya dan kesalahannya hilang.

Gellie Ann
sumber
3

Ini bisa dihadapi di Visual Studio 2015 juga ketika Anda menggunakan Azure AD dengan proyek MVC. Di sini ia membuat file startup sebagai Startup.Auth.cs di folder App_Start tetapi itu akan hilang

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

Jadi, tambahkan dan Anda harus siap. Ini berjalan sebelum namespace mulai.

Diceyus
sumber
2

Dimungkinkan juga untuk mendapatkan pengecualian ini (bahkan ketika Anda memiliki kelas startup yang dikonfigurasi dengan benar) jika dijalankan melalui IIS Express dan direktori virtual Anda tidak dikonfigurasi dengan benar.

Ketika saya mengalami masalah ini, resolusinya adalah dengan menekan tombol 'Buat Direktori Virtual' di tab 'Web' dari properti proyek (Menggunakan Visual Studio 2013)

mcarter
sumber
2

Apakah Anda benar-benar mencoba menambahkan OWIN ke proyek Anda atau ini sesuatu yang tidak terduga?

  1. Jika Anda ingin menambahkan OWIN, menambahkan kelas Startup adalah caranya.

  2. Jika Anda tidak memerlukan referensi ke Owin :

    hapus Owin.dll dari folder / bin Anda .

    Owin.dll adalah yang mencoba mengidentifikasi kelas Startup.

despuestambien
sumber
1

Meskipun saya tidak dapat sepenuhnya menjelaskan mengapa ini memecahkan masalah bagi saya, saya mengalami masalah seperti ini setelah saya mengubah proyek API saya untuk dibuat menjadi folder \debugdan terpisah \release. Setelah saya mengembalikan perubahan itu untuk membangun ke satu \binfolder hal-hal mulai bekerja.

Saya menulis pengalaman saya di sini: Tidak dapat menjalankan kelas OWIN Startup di IIS Express setelah mengganti nama file proyek ASP.NET

Sam Storie
sumber
1

Saya mengalami masalah ini setelah bereksperimen dengan SignalR dan kemudian mengeluarkannya dari proyek. Untuk menyelesaikannya saya harus menghapus isi folder bin untuk situs di server jauh dan kemudian menerbitkan lagi.

Owen Pauling
sumber
1

Cukup periksa apakah packages.configfile Anda dicentang (ketika dikecualikan, akan ada simbol larangan masuk berwarna merah yang ditampilkan di penjelajah). Untuk beberapa alasan aneh, tambang saya dikecualikan dan menyebabkan masalah ini.

Ian
sumber
0

Saya terus mendapatkan kesalahan yang sama ketika saya memulai proyek saya menggunakan Dashboard Tautan Browser di VS2013. Tetapi, ketika saya menjalankan proyek saya dalam mode debug, itu akan berhasil. Saya tidak tahu mengapa dan bagaimana cara membuat Dasbor Tautan Browser berfungsi. Saya memeriksa file startup, tidak apa-apa, menambahkan baris appSetting seperti yang dijelaskan dalam beberapa jawaban "", tetapi tidak ada yang berhasil.

Rupanya, yang saya lakukan salah adalah mengklik tautan SALAH di Dasbor Peramban. Semua tautan proyek Solusi ditampilkan di Dasbor Peramban, tetapi hanya tautan proyek startup yang berfungsi. Anda perlu mengklik tautan proyek startup.

Contoh: Saya memiliki 2 proyek, keduanya ditampilkan di Dasbor Peramban, tetapi hanya yang ditandai sebagai proyek start up yang akan berfungsi (ditampilkan dengan huruf tebal di Solution Explorer.) Saya pikir ini dapat membantu seseorang melakukan yang jelas, harganya 2 hari untuk tersandung pada yang sudah jelas.

alikuli
sumber
0

Saya memiliki masalah ini ketika saya mendapatkan yang terbaru tentang TFS sementara proyek lain terbuka dalam beberapa contoh VS. Saya sudah memiliki semua perbaikan di atas. Membuka kembali VS memperbaiki masalah.

PersyJack
sumber
0

Dalam kasus saya, saya masuk ke server ftp. Mengambil cadangan file saat ini di server ftp. Hapus semua file secara manual dari server ftp. Solusi bersih, pekerjakan ulang kode. Itu berhasil.

Kurkula
sumber