OWIN Başlangıç ​​Sınıfı Eksik


226

OWINProjem başlangıç ​​sınıfı için referans bulamadığı için bu hatayı alıyorum . Hatta tüm OWIN referans paketlerini Nuget üzerinden hala aynı sorunu alıyorum. Ben kullanıyorum Visual Studio 2012ve MVC4.

Uygulama yüklenmeye çalışılırken aşağıdaki hatalar oluştu.

  • OwinStartupAttribute içeren bir montaj bulunamadı.
  • Başlangıç ​​veya [AssemblyName] .Startup sınıfı içeren bir derleme bulunamadı. OWIN başlangıç ​​bulmayı devre dışı bırakmak için, web.config dosyasında "false" değerine sahip appSetting owin: AutomaticAppStartup öğesini ekleyin. OWIN başlangıç ​​Derleme, Sınıf veya Yöntemini belirtmek için, web.config dosyasında tam nitelikli başlangıç ​​sınıfı veya yapılandırma yöntemi adıyla appSetting owin: AppStartup öğesini ekleyin.

7
Eğer bir var mı Startup.csprojede?
christiandev

4
Montajınız bir OwinStartupAttribute? Montajınız bir Startupveya [AssemblyName].Startupsınıf mı? owin:AutomaticAppStartupWeb.config dosyasına "false" değerine sahip appSetting'i ekleyerek OWIN başlangıç ​​keşfini devre dışı bıraktınız mı ? Bunlardan birini yaptınız ve neden işe yaramadığını merak ediyor musunuz? Sorun nedir?
ta.speot.

1
Şey bu. Projeme yeni Öğe eklemeye çalıştığımda OWIN Başlangıç ​​sınıfını göstermiyor. Ben google üzerinde arama nugets aracılığıyla OWIN referanslar eklemek diyor ve ben de yaptım. Sınıfın hala eklenmesini sağlayamıyor.
Krunal Patil

Yanıtlar:


213

İsim Başlangıcı ile Bir Sınıf oluşturun, bu size yardımcı olacaktır ..

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

116
Buna ek olarak, başlangıç ​​sınıfınız bir şekilde varsayılan ad alanınızda değilse, aşağıdaki gibi bir web yapılandırma satırı ekleyin <appSettings>:<add key="owin:AppStartup" value="[NameSpace].Startup" />
Andrew Gray

7
Bugün, owin'i
Jaider

22
@ Andrew-Grey'in yorumuna ek olarak, koyarak [assembly:OwinStartupAttribute(typeof(Identity_Test.Startup))]içine AssemblyInfo.csçok çalışacak.
Achilles

14
ayrıca Microsoft.Owin.Host.SystemWeb paketine ihtiyacınız var, aksi takdirde Başlangıç ​​çağrılmaz
rjlopes

7
Bu satırı Başlangıç ​​sınıfının ad alanından hemen önce ekleyebiliriz: [assembly: OwinStartup(typeof([YourStartupNamespaceName].Startup))]
Minh Nguyen

194

Projemizde, OWIN işlevselliğine ihtiyacımız yoktu, bu yüzden ilk ASP.NET MVC şablon projesinden tüm owin referanslarını kaldırdık. Sorun, OWIN başlangıç ​​sınıfı kaldırıldıktan sonra oluştu.

Sorun ekstra owin dll benim bin klasöründe oldu. Onları sildiğimde sorun çözüldü. Bin klasörünü silerek bunları silmelisiniz. Temiz Çözüm bu dll'leri silmez.

Her nasılsa, IIS bin klasöründe olduklarında hala OWIN dll's yürütür.


6
Ben de bu sorunu vardı ve ayrıca Referanslar herhangi bir OWIN DLL's başvurmadı emin olmak zorunda kaldı.
hacker

2
Aynı sorun ve aynı çözüm. Ancak benim durumumda Signalr ve kodsuz bir kod dalı vardı. Dalları değiştirirken bir Cleanr sonra bile Signalr dlls kaldı. Bunları manuel olarak silmem gerekiyordu.
Kywillis

3
Sadece bunu söylemek için bir not tam anlamıyla bin klasör sadece benim durumumda çoğu DLL siler ama hepsi değil, Visual Studio'dan "Clean Solution" kullanarak değil anlamına gelir.
Alan Macdonald

1
Benim için çalışan bir şey, OWIN referanslarını sildikten sonra ve hala düzgün çalışmıyorsa <add key="owin:AutomaticAppStartup" value="false"/>bir appSetting olarak ekleniyordu . Sadece bunu denemek insanlar için bazı tavsiyeler ve hala başarılı değil.
LatentDenis

1
Bu işe yaramadı insanlar için, proje başvuruları gitmek bin klasörleri sildikten sonra ve Owin dll başvuruları kaldırmak emin olun. Benim durumumda bin klasörlerini sildim ama hala .csproj dosyasında (kullanılmayan) referansları olduğunu unuttum.
akousmata

104

Visual Studio 2013 RC2'de bunun için bir şablon vardır. Sadece App_Start klasörüne ekleyin.

resim açıklamasını buraya girin

Şablon böyle bir sınıf üretir:

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 de buna ihtiyaç duydu
Tom Stickel

2
Bu benim için yaptı - Startup.cs dosyasını oluşturdum ve doğru bir şekilde doldurdum ama App_Start klasöründe olması gerektiğini kaçırdım. Geliştirme makinemde iyi koştu, ancak yayınlandıktan sonra hata oluştu. Teşekkürler!
Jon Peterson

App.MapSignalR () eklemeyi unutmayın; Yapılandırma'da (IAppBuilder uygulaması), [Siteniz] / signalr çağrılırken 404 döndürülür
Kasper Halvas Jensen

45

OWIN başlangıcını kullanmak istemiyorsanız, web.config dosyanıza eklemeniz gereken şey budur :

AppSettings altında aşağıdaki satırı ekleyin:

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

Web.config dosyasında şöyle görünmesi gerekir:

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

1
Bu aslında tam cevaplardan biridir. Web.config ayarlarına çok
girmiyorsanız

25

İçin bir göz atın Startup.csDosyaya , bunlardan birini kaçırıyor olabilirsiniz. Bu dosya OWIN için giriş noktasıdır, bu yüzden eksik gibi geliyor. Şuna baksanaOWIN Startup classNeler olup bittiğini anlamak buraya .

Hatanızın belirttiği gibi, aşağıdakileri yaparak web.config dosyasında bunu devre dışı bırakabilirsiniz ...

OWIN başlangıç ​​keşfini devre dışı bırakmak için, app.etfig owin: AutomaticAppStartup değerini "false" değerine web.config dosyasına ekleyin


5
Eklediğim <add key="owin:AutomaticAppStartup" value="false" />için <appSettings>grubu ve Startup.cs artık ihtiyaç vardı.
webworm

@webworm, yukarıda bahsetmiştim.
christiandev

2
@christiandev tam olarak ne <add key="owin:AutomaticAppStartup" value="false" />yapacak? Herhangi bir işlevi devre dışı bırakacak mı? Herhangi bir OWIN işlevini kullanabilmek için uygulamayı daha sonra başlatmamız gerekiyor mu?
Flo

18

İlk olarak başlangıç ​​dosyanızı oluşturmanız ve bu dosyanın yerel ayarını web.config dosyasında, bu satırla appSettings etiketinin içinde belirtmeniz gerekir:

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

Sorunumu çözdü.


11

Bu sorunu yaşadım, bu OP'nin durumunda yanlış olan şey değil, ama benim durumumda bir Başlangıç ​​sınıfım vardı, sadece varsayılan olarak bulamıyordum.

Benim sorunum montaj adı boşluk vardı ve bu nedenle varsayılan ad alanı montaj adından farklı, bu nedenle başlangıç ​​sınıfı için ad alanı montaj adından farklı oldu.

Hatadan da anlaşılacağı gibi, kural olarak [Assembly Name] öğesini arar. Sınıf için başlangıç ​​yapın ... bu nedenle Startup sınıfınızın ad alanının Assembly adıyla aynı olduğundan emin olun. Sorun benim için düzeltildi.


1
Benzer bir sorun yaşadım. Proje adımda VS tarafından alt çizgiye dönüştürülen bir '-' tiresi vardı, bu nedenle ad alanı ve başlangıç ​​sınıfı esasen farklıydı.
LDJ

7

Burada önerilen düzeltmelerin çoğunu denedim ve yine de hata mesajından kaçınamadım. Sonunda birkaç önerilen çözümün bir kombinasyonunu yaptım:

  1. Bu girişi web.configAppSettings bölümümün en üstüne ekledim :

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

  2. Projemin Başvurular düğümünü genişletti ve dizeyi içeren her şeyi sildi OWIN. (Gelecekte etkin bir OWIN sağlayıcısı olmadığından (ve olmayacağından) bunu güvenli hissettim)

Sonra tıkladım Runve ana sayfam yüklendi.


4

Benim durumumda, projeyi yeniden adlandırdım ve klasör yapısını değiştirdim. Hatanın atıldığı .csproj dosyasında RootNameSpace ve AssemblyName güncelleştirilmesinin hatayı çözdüğünü buldum. Projenizin yollarını değiştirdiyseniz, bunu da kontrol etmenizi tavsiye ederim.

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

Kutsal inek kudos kardeşim, sonsuza kadar sıkışmıştı ve bunu okuyana kadar çözüm bulamadım, manuel olarak değiştirdikten sonra AssemblyName güncellenmedi. Şimdi çalışıyor! Çok teşekkür ederim!
Mason

3

Benim olayım? Başlangıç ​​dosyam vardı, ancak projede hariç tutuldu. Sadece dahil ettim ve hata kaldı.


3

Bu, Visual Studio 2015'te Azure AD'yi bir MVC projesiyle kullandığınızda da görülebilir. Burada başlangıç ​​dosyasını App_Start klasöründe Startup.Auth.cs olarak oluşturur, ancak

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

Bu yüzden ekleyin ve gitmek için iyi olmalısınız. Bu, ad alanı başlamadan önce olur.


2

IIS Express üzerinden çalışıyorsanız ve sanal dizininiz doğru yapılandırılmamışsa, bu özel durumu (doğru yapılandırılmış bir başlangıç ​​sınıfınız olsa bile) elde etmek de mümkündür.

Bu sorunla karşılaştığımda çözüm, proje özelliklerinin 'Web' sekmesindeki 'Sanal Dizin Oluştur' düğmesine basmaktı (Visual Studio 2013 Kullanarak)


2

Projenize gerçekten OWIN eklemeye mi çalışıyorsunuz yoksa bu beklenmedik bir şey mi?

  1. OWIN eklemek isterseniz, bir Başlangıç ​​sınıfı eklemek en uygun yoldur.

  2. Durumda size yok herhangi bir başvuru ihtiyaç Owin :

    Owin.dll dosyasını / bin klasörünüzden silin .

    Owin.dll, Başlangıç ​​sınıfını tanımlamaya çalışan kişidir.



1

SignalR ile denedikten sonra projeden çıkardıktan sonra bu problemle karşılaştım. Çözmek için uzak sunucudaki site için bin klasörünün içeriğini silmek ve sonra tekrar yayımlamak zorunda kaldı.


1

packages.configDosyanızın teslim edildiğini kontrol edin (hariç tutulduğunda, gezginde kırmızı bir giriş yok simgesi görünür). Bazı tuhaf nedenlerden dolayı benimki hariç tutuldu ve bu soruna neden oldu.


0

VS2013'te Tarayıcı Bağlantı Panosunu kullanarak projeme başladığımda aynı hatayı almaya devam ettim. Ancak, projemi hata ayıklama modunda çalıştırdığımda işe yarayacaktı. Tarayıcı Bağlantı Panosunun neden ve nasıl çalıştığını anlayamadım. Başlangıç ​​dosyasını kontrol ettim, iyi oldu, "" yanıtlarının bazılarında açıklandığı gibi appSetting satırını ekledim, ancak hiçbir şey işe yaramadı.

Görünüşe göre, yanlış yaptığım Tarayıcı Kontrol Panelindeki WRONG bağlantısını tıklamaktı. Tüm Çözümler proje bağlantıları Tarayıcı Kontrol Paneli'nde gösterilir, ancak yalnızca başlangıç ​​projeleri bağlantısı çalışır. Başlangıç ​​projesinin bağlantısını tıklamanız gerekir.

Örnek: Her ikisi de Tarayıcı Panosunda gösterilen 2 projem var, ancak yalnızca başlangıç ​​projesi olarak işaretlenmiş olanı çalışacak (Çözüm Gezgini'nde kalın olarak gösteriliyor.) Bunun birisinin bariz olmasına yardımcı olabileceğini düşündüm, bana maliyeti 2 güne kadar açık bir şekilde tökezlemek.


0

Diğer projeler VS'nin birden çok örneğinde açıkken TFS ile ilgili en son haberleri aldığımda bu sorunu yaşadım. Yukarıdaki tüm düzeltmelere zaten sahibim. VS'yi yeniden açmak sorunu çözdü.


0

Benim durumumda ftp sunucusunda oturum açtım. Ftp sunucusundaki mevcut dosyaların yedeğini aldı. Tüm dosyaları ftp sunucusundan manuel olarak silin. Temiz çözüm, kodu yeniden konuşlandırdı. İşe yaradı.

Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.