OWIN คลาสเริ่มต้นหายไป


226

ฉันได้รับข้อผิดพลาดนี้เนื่องจากโครงการของฉันไม่สามารถค้นหาข้อมูลอ้างอิงสำหรับOWINคลาสเริ่มต้นได้ ฉันได้ติดตั้งแพ็กเกจอ้างอิง OWIN ทั้งหมดผ่าน Nuget แล้วยังได้รับปัญหาเดียวกัน ฉันใช้และVisual Studio 2012MVC4

เกิดข้อผิดพลาดต่อไปนี้ขณะพยายามโหลดแอป

  • ไม่พบชุดประกอบที่มี OwinStartupAttribute
  • ไม่พบชุดประกอบที่มี Startup หรือ [AssemblyName] .Startup class หากต้องการปิดใช้งานการค้นพบเริ่มต้นของ OWIN ให้เพิ่มการตั้งค่าแอพ owin: AutomaticAppStartup ด้วยค่า "false" ใน web.config ของคุณ ในการระบุ OWIN startup Assembly, Class หรือ Method ให้เพิ่ม appSetting owin: AppStartup ด้วยคลาสเริ่มต้นแบบเต็มหรือชื่อวิธีการกำหนดค่าใน web.config ของคุณ

7
คุณมีStartup.csโครงการหรือไม่?
christiandev

4
ชุดประกอบของคุณมีOwinStartupAttributeหรือไม่? ไม่ได้ประกอบคุณStartupหรือ[AssemblyName].Startupระดับ? คุณได้ปิดการค้นพบการเริ่มต้น OWIN โดยเพิ่ม appSetting owin:AutomaticAppStartupด้วยค่า "false" ใน web.config ของคุณหรือไม่ คุณทำสิ่งเหล่านี้แล้วและสงสัยว่าทำไมมันไม่ทำงาน? คำถามของคุณคืออะไร?
ta.speot.is

1
นั่นคือสิ่งที่ มันไม่แสดงคลาสเริ่มต้นของ OWIN เมื่อฉันพยายามเพิ่มรายการใหม่ในโครงการของฉัน ฉันค้นหาใน google มันบอกว่าเพิ่มการอ้างอิง OWIN ผ่านทางนักเก็ตและฉันก็ทำเช่นเดียวกัน ยังไม่ได้รับคลาสเพื่อเพิ่ม
Krunal Patil

คำตอบ:


213

สร้างชั้นหนึ่งด้วยชื่อเริ่มต้นสิ่งนี้จะช่วยคุณ ..

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

116
นอกจากนี้หากคลาสเริ่มต้นของคุณไม่ได้อยู่ในพื้นที่ชื่อเริ่มต้นของคุณให้เพิ่มบรรทัดการกำหนดค่าเว็บลงใน<appSettings>พื้นที่เช่น:<add key="owin:AppStartup" value="[NameSpace].Startup" />
Andrew Grey

7
วันนี้มี 3 วิธีในการกำหนดค่า owin: asp.net/aspnet/overview/owin-and-katana/ …
Jaider

22
นอกจากความคิดเห็นของ @ andrew-grey การใส่[assembly:OwinStartupAttribute(typeof(Identity_Test.Startup))]ในAssemblyInfo.csก็จะใช้ได้เช่นกัน
Achilles

14
คุณต้องใช้ Microsoft.Owin.Host.SystemWeb แพคเกจไม่เช่นนั้นการเริ่มต้นจะไม่ถูกเรียกใช้
rjlopes

7
เราสามารถเพิ่มบรรทัดนี้ก่อนเนมสเปซของคลาสเริ่มต้น: [assembly: OwinStartup(typeof([YourStartupNamespaceName].Startup))]
Minh Nguyen

194

ในโครงการของเราเราไม่ต้องการฟังก์ชัน OWIN ดังนั้นเราจึงลบการอ้างอิงแบบ Owin ทั้งหมดออกจากโครงการเท็มเพลต ASP.NET MVC เริ่มต้น ปัญหาเกิดขึ้นหลังจากลบคลาสเริ่มต้น OWIN

ปัญหาคือ owin dll พิเศษในโฟลเดอร์ bin ของฉัน เมื่อฉันลบพวกเขาปัญหาได้รับการแก้ไข คุณควรลบทิ้งโดยการลบโฟลเดอร์ bin Clean Solutionจะไม่ลบ DLLs เหล่านี้

อย่างไรก็ตาม IIS ยังคงเรียกใช้ OWIN dll เมื่ออยู่ในโฟลเดอร์ bin


6
ฉันมีปัญหานี้ด้วยและต้องให้แน่ใจว่าการอ้างอิงไม่ได้อ้างอิง OWIN DLL ใด ๆ
แฮกเกอร์

2
ปัญหาเดียวกันและวิธีแก้ปัญหาเดียวกัน อย่างไรก็ตามในกรณีของฉันฉันมีรหัสสาขาหนึ่งที่มี Signalr และสาขาหนึ่งที่ไม่มี เมื่อทำการสลับกิ่งก้านสาขาสัญญาณ Signalr จะยังคงอยู่หลังจาก Clean ฉันต้องการลบด้วยตนเอง
Kywillis

3
เพิ่งทราบว่านี่หมายถึงโฟลเดอร์ bin ไม่เพียงแค่ใช้ "Clean Solution" จาก Visual Studio ซึ่งในกรณีของฉันถูกลบ DLLs ส่วนใหญ่ แต่ไม่ใช่ทั้งหมด
Alan Macdonald

1
สิ่งที่ใช้งานได้สำหรับฉันคือหลังจากลบการอ้างอิง OWIN และมันยังทำงานไม่ถูกต้องเพิ่ม<add key="owin:AutomaticAppStartup" value="false"/>เป็น appSetting เพียงแค่ให้คำแนะนำกับผู้ที่ลองใช้สิ่งนี้ แต่ก็ยังไม่ประสบความสำเร็จ
LatenDenis

1
สำหรับผู้ที่ไม่สามารถใช้งานได้ตรวจสอบให้แน่ใจว่าแม้หลังจากที่คุณลบโฟลเดอร์ถังขยะที่คุณไปสู่การอ้างอิงโครงการและลบการอ้างอิงไปยัง Owin dll ในกรณีของฉันฉันลบโฟลเดอร์ bin แต่ลืมไปแล้วว่าฉันยังคงมีการอ้างอิง (ไม่ได้ใช้) อยู่ในไฟล์. csproj
akousmata

104

บน Visual Studio 2013 RC2 มีเทมเพลตสำหรับสิ่งนี้ เพียงเพิ่มลงในโฟลเดอร์ App_Start

ป้อนคำอธิบายรูปภาพที่นี่

เทมเพลตสร้างคลาสดังกล่าว:

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 ต้องการสิ่งนี้เช่นกัน
Tom Stickel

2
สิ่งนี้ทำเพื่อฉัน - ฉันสร้างไฟล์ Startup.cs และเติมให้ถูกต้อง แต่พลาดไปว่าจำเป็นต้องอยู่ในโฟลเดอร์ App_Start วิ่งได้ดีบนเครื่อง dev ของฉัน แต่เมื่อเผยแพร่แล้วก็เกิดข้อผิดพลาด ขอบคุณ!
Jon Peterson

อย่าลืมเพิ่ม app.MapSignalR (); ในการกำหนดค่า (แอพ IAppBuilder), จะส่งคืน 404 เมื่อเรียก [YourSite] / signalr
Kasper Halvas Jensen

45

หากคุณไม่ต้องการใช้การเริ่มต้น OWIN นี่คือสิ่งที่คุณควรเพิ่มในไฟล์web.configของคุณ:

ภายใต้AppSettingsเพิ่มบรรทัดต่อไปนี้:

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

นี่คือลักษณะที่ควรจะเป็นในเว็บของคุณ config:

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

1
นี่เป็นหนึ่งในคำตอบที่สมบูรณ์ หากคุณไม่ได้มากสู่การตั้งค่า web.config ก็ยากที่จะคิดว่าคุณควรจะเพิ่มที่สำคัญและคุ้มค่าในไฟล์ XML
makoshichi

25

ดูStartup.csไฟล์คุณอาจหายไปหนึ่งในนั้น ไฟล์นี้เป็นจุดเริ่มต้นสำหรับ OWIN ดังนั้นจึงดูเหมือนว่าไฟล์นี้จะหายไป ลองดูที่OWIN Startup classนี่เพื่อทำความเข้าใจว่าเกิดอะไรขึ้น

ตามที่ระบุข้อผิดพลาดคุณสามารถปิดการใช้งานนี้ใน web.config โดยทำดังต่อไปนี้ ...

หากต้องการปิดใช้งานการค้นพบการเริ่มต้นของ OWIN ให้เพิ่มแอปตั้งค่า owin: AutomaticAppStartup ด้วยค่า "false" ในเว็บของคุณ


5
ฉันเพิ่มลง<add key="owin:AutomaticAppStartup" value="false" />ใน<appSettings>กลุ่มและไม่จำเป็นต้องใช้ Startup.cs อีกต่อไป
webworm

@webworm ฉันพูดถึงข้างต้น
christiandev

2
@ Christiandev ว่าจะ<add key="owin:AutomaticAppStartup" value="false" />ทำอะไร? มันจะปิดการใช้งานการทำงานใด ๆ เราจำเป็นต้องเริ่มแอปในภายหลังเพื่อให้สามารถใช้ฟังก์ชันการทำงานของ OWIN ได้หรือไม่
Flo

18

ก่อนอื่นคุณต้องสร้างไฟล์เริ่มต้นและหลังจากคุณต้องระบุภาษาของไฟล์นี้ใน web.config ภายในแท็ก appSettings ด้วยบรรทัดนี้:

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

มันแก้ไขปัญหาของฉัน


11

ฉันมีปัญหานี้เข้าใจว่านี่ไม่ใช่สิ่งที่ผิดในกรณีของ OP แต่ในกรณีของฉันฉันมีคลาสเริ่มต้นเพียงแค่ไม่พบมันโดยค่าเริ่มต้น

ปัญหาของฉันคือฉันมีช่องว่างในชื่อชุดประกอบของฉันและด้วยเหตุนี้เนมสเปซเริ่มต้นจึงแตกต่างจากชื่อชุดประกอบดังนั้นเนมสเปซสำหรับคลาสเริ่มต้นจึงแตกต่างจากชื่อชุดประกอบ

เป็นข้อผิดพลาดที่แนะนำโดยการประชุมจะมองหา [Assembly Name] .Startup สำหรับ class ... ดังนั้นให้แน่ใจว่า namespace สำหรับคลาส Startup ของคุณเหมือนกับชื่อ Assembly แก้ไขปัญหาให้ฉัน


1
ฉันมีปัญหาที่คล้ายกัน ชื่อโครงการของฉันมีเครื่องหมายยัติภังค์ '-' อยู่ในนั้นซึ่งถูกแปลงเป็นขีดล่างโดย VS ดังนั้นเนมสเปซและคลาสเริ่มต้นจึงแตกต่างกันอย่างมาก
LDJ

7

ฉันลองแก้ไขที่แนะนำส่วนใหญ่ที่นี่และยังไม่สามารถหลีกเลี่ยงข้อความแสดงข้อผิดพลาดได้ ในที่สุดฉันก็รวมโซลูชันที่แนะนำไว้สองสามข้อ:

  1. เพิ่มรายการนี้ไปด้านบนของAppSettingsส่วนของเว็บของฉันconfig :

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

  2. OWINขยายอ้างอิงโหนดของโครงการของฉันและลบทุกอย่างที่มีสตริง (ฉันรู้สึกปลอดภัยที่จะทำเช่นนั้นเนื่องจากองค์กรของฉันไม่ใช่ (และจะไม่) ผู้ให้บริการ OWIN ที่ใช้งานในอนาคต)

จากนั้นฉันคลิกRunและหน้าแรกของฉันโหลดขึ้นมา


4

ในกรณีของฉันฉันได้เปลี่ยนชื่อโครงการและเปลี่ยนเป็นโครงสร้างโฟลเดอร์ ฉันพบว่าการอัพเดต RootNameSpace และ AssemblyName ในไฟล์. csproj ที่ข้อผิดพลาดถูกส่งออกไปแก้ไขข้อผิดพลาด หากคุณมีการปรับเปลี่ยนเส้นทางของโครงการของฉันฉันขอแนะนำให้ตรวจสอบสิ่งนี้เช่นกัน

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

รุ่งโรจน์อันศักดิ์สิทธิ์ของวัวคุณติดอยู่กับมันตลอดไปและไม่พบทางออกจนกว่าฉันจะอ่านสิ่งนี้ AssemblyName ไม่ได้รับการปรับปรุงหลังจากที่ฉันเปลี่ยนมันด้วยตนเอง ตอนนี้มันใช้งานได้! ขอบคุณมาก!
Mason

3

กรณีของฉัน? ฉันมีไฟล์เริ่มต้น แต่ไม่รวมอยู่ในโครงการ ฉันเพิ่งรวมมันและข้อผิดพลาดที่เหลือ


3

สิ่งนี้อาจพบได้ใน Visual Studio 2015 เช่นกันเมื่อคุณใช้ Azure AD กับโครงการ MVC ที่นี่จะสร้างไฟล์เริ่มต้นเป็น Startup.Auth.cs ในโฟลเดอร์ App_Start แต่จะหายไป

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

ดังนั้นเพิ่มและคุณควรจะดีไป สิ่งนี้จะดำเนินการก่อนเนมสเปซเริ่มต้น


2

เป็นไปได้ที่จะได้รับข้อยกเว้นนี้ (แม้ว่าคุณจะมีคลาสเริ่มต้นที่กำหนดค่าไว้อย่างถูกต้อง) หากเรียกใช้ผ่าน IIS Express และไดเรกทอรีเสมือนของคุณไม่ได้กำหนดค่าอย่างถูกต้อง

เมื่อฉันพบปัญหานี้ความละเอียดคือกดปุ่ม 'สร้างไดเรกทอรีเสมือน' ในแท็บ 'เว็บ' ของคุณสมบัติโครงการ (ใช้ Visual Studio 2013)


2

คุณพยายามเพิ่ม OWIN ในโครงการของคุณจริง ๆ หรือนี่เป็นสิ่งที่ไม่คาดคิดหรือไม่?

  1. ในกรณีที่คุณต้องการเพิ่ม OWIN การเพิ่มคลาสเริ่มต้นเป็นวิธีที่จะไป

  2. ในกรณีที่คุณไม่จำเป็นต้องอ้างอิงถึงOwin :

    ลบ Owin.dll จากโฟลเดอร์ / bin ของคุณ

    Owin.dll เป็นผู้พยายามระบุคลาสเริ่มต้น


1

ในขณะที่ฉันไม่สามารถอธิบายได้อย่างสมบูรณ์ว่าทำไมสิ่งนี้จึงแก้ไขปัญหาให้ฉัน แต่ฉันพบปัญหาเช่นนี้หลังจากฉันเปลี่ยนโครงการ API ของฉันเพื่อสร้างเป็นแยก\debugและ\releaseโฟลเดอร์ เมื่อฉันย้อนกลับการเปลี่ยนแปลงนั้นกลับไปสร้างเป็น\binโฟลเดอร์เดียวสิ่งที่เริ่มทำงาน

ฉันเขียนประสบการณ์ของฉันที่นี่: ไม่สามารถรับคลาส OWIN Startup ให้ทำงานใน IIS Express หลังจากเปลี่ยนชื่อไฟล์โครงการ ASP.NET


1

ฉันพบปัญหานี้หลังจากทดลองใช้ SignalR แล้วลบออกจากโครงการ หากต้องการแก้ไขฉันต้องลบเนื้อหาของโฟลเดอร์ช่องเก็บสำหรับไซต์บนเซิร์ฟเวอร์ระยะไกลแล้วเผยแพร่อีกครั้ง


1

เพียงตรวจสอบว่าpackages.configไฟล์ของคุณถูกเช็คอินแล้ว (เมื่อไม่รวมจะมีสัญลักษณ์ไม่ปรากฏสีแดงแสดงใน explorer) ด้วยเหตุผลบางอย่างที่แปลกประหลาดของฉันได้รับการยกเว้นและทำให้เกิดปัญหานี้


0

ฉันยังคงได้รับข้อผิดพลาดเดียวกันเมื่อฉันเริ่มโครงการโดยใช้เบราว์เซอร์ลิงค์ลิงก์ใน VS2013 แต่เมื่อฉันรันโครงการของฉันในโหมดแก้ไขข้อบกพร่องมันจะทำงานได้ ฉันไม่สามารถหาสาเหตุและวิธีทำให้แผงควบคุมลิงก์เบราว์เซอร์ทำงานได้ ฉันตรวจสอบไฟล์เริ่มต้นใช้งานได้ดีเพิ่มแอปตั้งค่าบรรทัดตามที่อธิบายในคำตอบบางคำตอบ "" แต่ไม่มีอะไรทำงาน

เห็นได้ชัดว่าสิ่งที่ฉันทำผิดคือคลิกที่ลิงก์ที่ไม่ถูกต้องในแผงควบคุมเบราว์เซอร์ ลิงก์โปรเจ็กต์โซลูชันทั้งหมดแสดงในเบราว์เซอร์ Dashboard แต่จะมีเฉพาะลิงก์โปรเจ็กต์เริ่มต้นเท่านั้นที่ใช้งานได้ คุณต้องคลิกที่ลิงค์ของโครงการเริ่มต้น

ตัวอย่าง: ฉันมี 2 โปรเจ็กต์ทั้งคู่แสดงใน Browser Dashboard แต่เฉพาะโปรเจ็กต์ที่ทำเครื่องหมายว่าโปรเจ็กต์เริ่มต้นจะใช้งานได้ (แสดงเป็นตัวหนาใน Solution Explorer) ฉันคิดว่านี่อาจช่วยให้ใครบางคนเห็นได้ชัด วันเพื่อสะดุดให้ชัดเจน


0

ฉันมีปัญหานี้เมื่อฉันได้รับ TFS ล่าสุดในขณะที่โครงการอื่น ๆ เปิดในหลายกรณีของ VS ฉันมีการแก้ไขทั้งหมดด้านบนแล้ว การเปิดใหม่ VS แก้ไขปัญหา


0

ในกรณีของฉันฉันเข้าสู่เซิร์ฟเวอร์ ftp ใช้การสำรองไฟล์ปัจจุบันบนเซิร์ฟเวอร์ ftp ลบไฟล์ทั้งหมดด้วยตนเองจากเซิร์ฟเวอร์ ftp วิธีการแก้ปัญหาที่สะอาดปรับใช้รหัสใหม่ มันได้ผล

โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.