OwinStartup ateş etmiyor


351

Mükemmel çalışan OwinStartup yapılandırma kodu vardı ve sonra çalışmayı durdurdu. Ne yazık ki, çalışmayı durdurmak için ne yaptığımdan tam olarak emin değilim ve bunu anlamaya gerçekten zorlanıyor.

Temel bilgilerin ele alındığından emin olmak için,

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

özniteliği düzgün atandı ve owin için bir appSetting olmadığından emin olun: AutomaticAppStartup, false olarak ayarlandığından, daha önce hiçbir şey olmadığı için güvenli olması için bir set true yaptım.

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

Ayrıca özellikle appSetting'i çağırmayı denedim:

<add key="owin:appStartup" value="WebApplication.Startup" />

Çalışmayı durdurmadan önce Microsoft.Owin.Security NuGet paketlerini 2.0.2'ye yükselttim, bu yüzden onları 2.0.1'e geri döndürmeye çalıştım (bu bir acıydı), ancak hiçbir şey değişmedi. Projede yüklü WebActivator var ve başka şeyler önyükleme için kullanıyorum ama taze bir WebApplication şablonunda test ve ben bu yüzden suçlu olduğunu sanmıyorum orada çalışır.

Ayrıca Başlangıç ​​Sınıfımı kaldırmayı ve Yeni Öğe Ekle'deki OWIN Başlangıç ​​Sınıfı türünü kullanarak yeni bir tane eklemek için Visual Studio'yu kullanmayı denedim ve bu da çağrılmıyor. Daha sonra, tanımlanmış birden fazla OwinStartup özniteliği varsa bir istisna atacağını bildiğim için ikinci bir Başlangıç ​​sınıfı eklemeyi denedim, ancak orada herhangi bir istisna atmıyor.

Başka ne denenebilir emin değilim. Düşüncesi olan var mı?

Güncelleme

Kullanılmayan başvuruları kaldırmak için kullandığımda Resharper'ın Microsoft.Owin.Host.SystemWeb başvurusunu kaldırdığı ortaya çıkıyor.


37
Bu uygulamada Microsoft.Owin.Host.Systemweb paketi yüklü mü? Bu dll ayrıca bin klasörünün bir parçası olduğundan emin olun?
Praburaj

1
Öyleydi. Çok teşekkürler. Sanırım olan şey, bir noktada kullanılmayan referansları kaldırmak için Resharper'ı kullandığım ve bunun gerekli olduğunu düşünmüyor. Bunu bir cevap olarak vermek isterseniz, kesinlikle çözüm olarak işaretleyeceğim. Yardım için teşekkürler.
Jeff Treuting

2
Jeff, ReSharper, Microsoft.Owin.Host.Systemweb'e "kullanılmayan" referansı kaldırdı - "using" ifadesinden mi bahsediyorsunuz? Hangi dosyada Startup.cs?
vkelman

4
Aynı sorunu yaşadım, yeniden paylaşıcı Microsoft.Owin.Host.SystemWeb başvurusunu kaldırdı. Visual Studio'da Paket Yöneticisi Konsolu Penceresini açıp PM> Update-Package -reinstall Microsoft.Owin.Host.SystemWeb
Joe King

1
@ JoeKing'in yukarıdaki ifadesine bir güncelleme olarak. PM Console "Bulunamadı" olarak güncellenmez. Yeniden yüklemek için gitmek zorunda kaldım. PM> Kurulum Paketi Microsoft.Owin.Host.SystemWeb
Morvael

Yanıtlar:


769

Microsoft.Owin.Host.SystemWebProjeye paket yüklediğinizden emin olun . Bu paket, IIS tarafından barındırılan uygulamalarda başlangıç ​​algılaması için gereklidir. Daha fazla bilgi için bu makaleye bakabilirsiniz .


4
Birisi , Microsoft.Owin malzemelerinin bu doğrudan referanslarına ihtiyaç duymadan onu ( PreApplicationStartMethod ) olarak adlandıracağımız varsayılarak, tüketilen / owin'i kapsayan bir kütüphanede programlı olarak Owin Başlangıç ​​Tespiti'ni başlatabilir mi? Özellikle Katana'yı aramaya nasıl kışkırtırız Startup.Configuration(IAppBuilder)?
Jason Kleban

7
MVC şablonunu kullanmadan sıfırdan bir uygulama oluşturmaya çalışıyorum. Bu 2 saat umutsuzluk sona erdi.
mkvlrn

1
Yeniden paylaşımcı bağırarak en büyük üretkenlik katiliyken, bu problemi yaşadım ve bir hafta boyunca neden web api'nin çalışmayı bıraktığını anlayamadım. Bir başka kanıt yeniden şekillendirici üretkenliğimi öldürüyor.
Ivan G.

5
Derleme sırasında gerçekten kullanılmayan bir kitaplığa başvurmak Microsoft tarafından kötü bir tasarımdır! Resharper elinden gelenin en iyisini yapıyor ancak bu tür kötü kararlara karşı silah yok.
ps_ttf

22
İnanılmaz. Her OWIN başlangıç ​​dosyası eklediğimde bu sorunla karşılaşıyorum. Ve nedenini her unutursam ve sonunda bu cevaba.
Tobias

71

Daha eski bir MVC sürümünden yükseltme yaptıysanız,

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

senin web.config . Başlangıç ​​mantığının çağrılmasını engelleyecektir.

Bunun yerine true

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

Bundan daha önce bahsettiğinizin farkındayım ama bazen insanlar (benim gibi) tüm soruyu okumuyor ve sadece cevaplara atlıyorlar ...

Hat boyunca bir yerde - MVC 5'e yükselttiğimde bu eklendi ve bugüne kadar hiç görmedim.


Eski bir mvc projesinde bir Owin başlangıç ​​sınıfı uygulanırken aynı sorunu vardı. Değeri değiştirmek hile yaptı!
Darxtar

51

Tartışılan orijinal sorunun alternatif cevap - Owin "ateş değil." Benim durumumda, içinde bir kırılma noktası belirleyemediği için ateş etmediğini düşünerek saatler geçirdim.

Visual Studio'da OWIN başlangıcında hata ayıklarken

  • IIS Express - "F5" çalıştırıldığında OWIN başlatma kodu bozulacak

  • IIS - "F5" Running olmaz Owin (ve Global.asax) kodu yüklendikten sonra kadar bölünürler. W3P.exe'ye eklerseniz, ona adım atabilirsiniz.


2
Haklısın! Yalnızca Visual Studio 2013 hata ayıklayıcısı, yerel IIS altında çalışırken Başlangıç ​​sınıfı içindeki bir kesme noktasında durmuyor. Tuhaf.
vkelman

4
'W3P.exe dosyasına ekle' hakkında ayrıntılı bilgi verebilir misiniz? IIS ile vurulma kesme noktası aynı sorunu var ama IISExpress ile vuruldu. Uygulamayı durdurdum, w3wp.exe'ye ekledim ve daha sonra localhost'a göz attım ama yine de vurulmuyor. Bir şey kaçırdım mı?
Sean

Uygulamamın çalışan bir örneğine de ekleyemiyorum, ancak daha önce yapabileceğime inanıyorum. Bir tarayıcıda, ardından VS2013'te "Debug-> Process'e Ekle" yi kullanmak için bir uygulamayı açmaya ve ardından bir tarayıcıya bir sayfayı yeniden yüklemeye çalıştım. VS durmadı. OWIN Startup yürütüyor biliyorum: Hata ayıklama amacıyla içine bazı giriş koymak. Karanlık bir ara hata ayıklama baskısındaki gibi.
vkelman

2
bir ortak çalışan bana iis'te varsayılan uygulama havuzunu çift tıklarsanız ve yönetilen boru hattı modunu klasik olarak değiştirirseniz hata ayıklayıcının başlangıçta kırılacağını gösterdi. Bundan sonra koştum ve uygulamanın Entegre'de çalışması gerektiğini söyleyen bir hata aldım, bu yüzden geri değiştirmek zorunda kaldım ama en azından orada kırıldığını görebiliyordum.
Matt Bodily

Burada birkaç şey var. "w3wp.exe", uygulama havuzunu temel alır. başvurunuz bu işlemi başlatan talep ettiğiniz ilk uygulama değilse global.asax ve owin hatalarını ayıklayabilmeniz gerekir. yani, "w3wp.exe dosyasına ekle" uygulama havuzunda farklı bir uygulama isteyin ve sonra uygulama hata ayıklama girişiminizi isteyin.
Brett Caswell

26

Koddaki hata ayıklamada sorun yaşıyorsanız StartupSınıfta , ben de bu sorun vardı - ya da ben sanıyordum. Kod ateşleme oldu ama ben hata ayıklayıcı iliştirilmeden önce olduğuna inanıyorum, böylece kod üzerinde kesme noktaları ayarlayamaz ve ne olduğunu göremezsiniz.

Sınıf Configurationyöntemine bir istisna atarak bunu kanıtlayabilirsiniz Startup.


tam olarak olan bu. Hata ayıklayıcı eklendikten sonra Başlangıç ​​sınıfının tetiklenmesini sağlayacak bir çözüm var mı?
Tom Schreck

Yapılandırma yönteminde istisna atmayı bilebilir miyim?
Karthikeyan

1
Çalıştırıldığını kanıtlamak için bu satırı Startup.cs dosyasına ekledi: System.IO.File.WriteAllText (@ "c: \ temp \ startup.txt", "Started");
RaoulRubin

1
@Karthikeyan - ConifureAuth (uygulama) 'dan önce bu satırı ekleyin (önemli değil); satır atma yeni İstisna ("Merhaba");
Francis Rodgers

İlk satırı yapın System.Threading.Sleep (10_000), böylece hata ayıklayıcının devam etmeden önce eklenmesi için yeterince uzun bekleyecek (gerektiği gibi ayarlayın)
James Gray

16

HATA AYIKLAMA İPUÇLARI

Hata ayıklama işe yaramazsa, IIS Express'i kullanmayı deneyin veya yerel IIS için aşağıdaki yöntemi deneyin

Yerel IIS kullanma

Herhangi bir nedenle bu yöntem, bu yöntemin hata ayıklamasını sağlar:

  1. Bir web sayfası isteyin
  2. W3wp.exe işlemine ekle
  3. Web.config dosyasına dokunun
  4. Bir web sayfası isteyin

Ekstra ipucu

Belki bunu yapmak bir önbelleği temizler:

  1. Web.config dosyasına optimizeCompilations özelliğini yanlış bir değerle ekleyin

    <compilation debug = "true" ... optimizeCompilations = "false">

  2. Siteyi çalıştır

  3. Web.config dosyasındaki değişikliği geri alma

2
ayarı değiştirmek optimizeCompilations="false"benim için çalışıyor
barsh

Sen benim günümü kurtar! optimizeCompilations = "false" benim için çalışıyor.
Vostrugin

Derleme günümü kurtardı. Teşekkürler :)
Bogdan Stojanovic

13

Buna benzer bir sorun vardı ve Geçici ASP.NET Dosyalarını temizlemek sorunu düzeltti. Umarım bu birine yardımcı olur.


4
Sadece referans olarak, bu dosyaların nerede saklandığı hakkında biraz daha ayrıntılı bilgi veren başka bir cevap: stackoverflow.com/questions/16137457/…
Sam Storie

1
IIS EXPRESS ve pencere 8'i çalıştırıyorum: buradan silin: C: \ Kullanıcılar \ Kullanıcı Adınız \ AppData \ Local \ Temp \ Temporary ASP.NET Files \ vs
Gray Wolf

Teşekkürler, bu cevabı fark ettim çünkü bundan önce bir hata, Geçici ASP.NET Dosyaları klasöründeki bir dosyayı kilitleme hakkında bir şeyim vardı
Elger Mensonides

1 gün boyunca bununla mücadele ediyordum ve sonunda bu benim için çalıştı. Temporary ASP.NET FilesKlasör içeriğini temizledikten sonra ve Owin başlatma çağrıldı.
Sert Yem

11

Ben de aynı problemi yaşadım. Microsoft.Owin.Host.SystemWeb paketi kuruldu, ancak yükleme sırasında NuGet dll'yi bir nedenle referans olarak ekleyemedi. Projenizin bu referansa sahip olduğundan emin olun. Değilse yeniden yüklemeyi deneyebilirsiniz:

update-package Microsoft.Owin.Host.SystemWeb -reinstall

Yeniden yükleme sırasında aşağıdaki gibi bir hata vardı ama bir şekilde çalıştı:

Sistem çağrısı başarısız oldu. (HRESULT istisnası: 0x80010100 (RPC_E_SYS_CALL_FAILED))


Bir süredir bununla savaşıyordum ve bu benim sorunumu çözdü. Nuget referansı Packages.config içinde vardı, ama benim csproj referans yoktu.
Zackary Geers

1
Benim durumumda, paketi hiç yüklemedim. Kurulum paketini çalıştırmak Microsoft.Owin.Host.SystemWeb sorunumu çözdü. İpucu için teşekkürler.
J. Horn

2

Benim durumumda, IIS uygulama havuzu v4 olarak ayarlanmadı. V2 idi.

AppPool v4 olarak değiştirildi ve her şey iyiydi.


2

Owin'i mevcut bir web projesine eklediğimde de aynı problem yaşadım. Sonunda sorunun web.config dosyasında aşağıdakilerden kaynaklandığını gördüm.

<assemblies>
  <remove assembly="*" />
  <add assembly="System.Web.Mvc" />
  <add assembly="System.Web.WebPages" />

   ...

</assemblies>

Kaldırma düzeneği = "*" soruna neden oluyordu. Bu satırı kaldırdığımda Owin başlangıç ​​kodu koştu. Sonunda aşağıdakine değiştirdim ve mükemmel çalıştı

<assemblies>
  <remove assembly="*" />
  <add assembly="Microsoft.Owin.Host.SystemWeb" />
  <add assembly="System.Web.Mvc" />
  <add assembly="System.Web.WebPages" />
  <add assembly="System.Web.Helpers" />
...
</assemblies>

1
Bir sitecore projem vardı ve web.config dosyamda <remove assembly = * "/> etiketi yoktu. Ancak <add assembly =" Microsoft.Owin.Host.SystemWeb "/> öğesini eklemek sorunumu çözdü.
burki

Teşekkürler @burki, yorumunuz nedeniyle kendimi bu çözümü denemeye zorladım ve bizim için de işe yaradı! Owin başlangıç ​​sınıfı VS'nin 15.9.9'a güncellenmesinden bu yana ateş etmiyordu.
David

çok teşekkür ederim! Bu düzeltti, ben follwing eklemek zorunda kaldı: <assemblies> <remove assembly = "*" /> <add assembly = "myapplication" /> <add assembly = "Microsoft.Owin.Host.SystemWeb" /> <derleme ekle = "Microsoft.Owin.Security" /> <derleme ekle = "System.Web.Mvc" /> <derleme ekle = "System.Web.WebPages" /> <derleme ekle = "System.Web.Helpers" /> < / meclisler>
trykyn

1

Benim durumumda, web sitemin çıktı yolu birileri tarafından değiştirildi, IIS Express OWIN'i yüklemese bile ve kurulum sınıfı elbette isabet etmeyecek. Çıkış yolunu "bin \" olarak ayarladıktan sonra iyi çalışıyor.


1

Benim durumumda bu Microsoft.Owin.Host.SystemWeb paketi projede var.

Ancak web.config dosyasında iki etiket bulunmaz.

<add key="owin:AutomaticAppStartup" value="true" />
<add key="owin:appStartup" value="namespace.className.methodName" />

ekledikten sonra sorunsuz çalışır.


1

Benim durumumda, web.config dosyamda

<authorization>
  <allow users="?" />
</authorization>

Owin'e geri dönmeye zorlamak için

<authorization>
  <deny users="*" />
</authorization>

0

Bu yazıdaki birçok öneriyle uğraştım.

Aşağıdakilere sahiptim ama yine de bir kırılma noktasına inemedim. Bir istisna atmak, kodun girildiğini kanıtladı.

<appSettings>
...
  <add key="owin:AutomaticAppStartup" value="true" />
  <add key="owin:appStartup" value="SSOResource.Startup, SSOResource" />
...
</appSettings>

Sonunda umutsuzluk proje-> özellikleri baktı ve sonra WEB bölümünün altında da NATIVE KOD onay kutusunu işaretledim (ASP.NET zaten kontrol edilmelidir).

Sonunda benim için düzeltti.

Not: Visual Studio 2017 Professional kullanıyorum.


0

Bunun hala birisine yardım edip etmeyeceğinden emin değilim, ancak yukarıdaki tüm çözümleri (ve diğer yayınlardan) boşuna yaptım.

Sonunda sorunu gideren şey, web.config dosyasındaki RedirectUri değerinin sonuna ters eğik çizgi koymaktı (deli, biliyorum!). RedirectUri, UseOpenIdConnectAuthentication içindeki bir parametredir.

Yani, yerine:

<add key="ida:RedirectUri" value="https://www.bogussite.com/home" />

Bunu yap:

<add key="ida:RedirectUri" value="https://www.bogussite.com/home/" />

Ve Azure Uygulama Ayarları'ndaki Yanıt URL'sini de güncelleyin.

Bu, bir şekilde Startup'ın beklendiği gibi çalışmasını sağladı (muhtemelen bazı önbellekleri temizledi) ve kesme noktaları şimdi ateşliyor.

Bilginize. Kodumu buradan modelleniyordum: https://github.com/microsoftgraph/aspnet-connect-sample


0

Sonra bir Web Uygulaması Projesi için sınıf kitaplığı dönüştürme , bu koştum ve inatçı oldu. Çıktı, benim .csProjdosyamda, ben vardı:

<PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Debug|AnyCPU' ">
  <DebugSymbols>true</DebugSymbols>
  <DebugType>full</DebugType>
  <Optimize>false</Optimize>
  <OutputPath>bin\Debug\</OutputPath>
  <DefineConstants>DEBUG;TRACE</DefineConstants>
  <ErrorReport>prompt</ErrorReport>
  <WarningLevel>4</WarningLevel>
</PropertyGroup>
<PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Release|AnyCPU' ">
  <DebugType>pdbonly</DebugType>
  <Optimize>true</Optimize>
  <OutputPath>bin\Release\</OutputPath>
  <DefineConstants>TRACE</DefineConstants>
  <ErrorReport>prompt</ErrorReport>
  <WarningLevel>4</WarningLevel>
</PropertyGroup>
  • böylece bin-klasörü (ki ifc çalışmaz) bir alt klasör içine çeşitli dll's bina. Çözüm için her iki metin içeriğini değiştirmek oldu OutputPathlazım bin\.

0

Benim için aynı isim alanında olmamalarıydı. AppStart'ımı "project.Startup.AppStart" klasöründen kaldırdıktan ve "project.Startup" ad alanı ile Startup.cs ve Startup.Auth.cs dosyalarının her ikisine de izin verdikten sonra, her şey mükemmel bir şekilde çalışmaya geri döndü.

Umarım yardımcı olur!


0

IIS barındırma ile ilgili bu sorunu görüyorsanız, ancak F5 hata ayıklaması yaparken görmüyorsanız, IIS'de yeni bir uygulama oluşturmayı deneyin.

Bu benim için düzeltildi. (windows 10) Sonunda "kötü" IIS uygulamasını sildim ve aynı ada sahip aynı uygulamayı yeniden oluşturdum.


0

Bazı insanların yukarıda almaya çalıştıklarını düşünüyorum, eğer programlı olarak OWIN sunucunuzu "canlanıyor" yapmak istiyorsanız, şöyle bir şey diyorsunuzdur:

using Microsoft.Owin.Hosting;

    IDisposable _server = WebApp.Start<StartupMethod>("http://+:5000"); 
              // Start Accepting HTTP via all interfaces on port 5000

Bu çağrıyı yaptıktan sonra hata ayıklayıcıda StartupMethod () çağrısının tetiklendiğini göreceksiniz



0

Bu benim için çalıştı:

kimlik doğrulama modu ekle = "Yok"

<system.web>
    <compilation debug="true" targetFramework="4.6.1" />
    <httpRuntime targetFramework="4.6.1" />
      <authentication mode="None" /><!--Use OWIN-->
  </system.web>

-3

Önce OWIN Auth Sınıfını ekleyin ve ardından etkinleştirin web.config dosyasında OWIN: AutomaticAppStartup anahtarını . Şimdi ateş edecek

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.