ไม่พบแอสเซมบลีที่มีข้อผิดพลาด OwinStartupAttribute


88

ข้อผิดพลาดนี้

เกิดข้อผิดพลาดต่อไปนี้ขณะพยายามโหลดแอป - ไม่พบชุดประกอบที่มี OwinStartupAttribute - ไม่พบประเภทหรือวิธีการที่ระบุ 'เท็จ' ลองระบุ Assembly หากต้องการปิดใช้งานการค้นพบการเริ่มต้น OWIN ให้เพิ่ม appSetting owin: AutomaticAppStartup ด้วยค่า "เท็จ" ใน web.config ของคุณ ในการระบุ OWIN startup Assembly, Class หรือ Method ให้เพิ่ม appSetting owin: AppStartup ด้วยคลาสเริ่มต้นที่มีคุณสมบัติครบถ้วนหรือชื่อวิธีการกำหนดค่าใน web.config ของคุณ

ปรากฏบนหน้าจอของฉันในหน้าแสดงข้อผิดพลาดที่น่าเกลียดที่สุดเท่าที่เคยมีมาในประวัติศาสตร์

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

ฉันได้พยายามทำตามคำแนะนำบนหน้าโดยการใส่ owin: AutomaticAppStartup ใน config

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

สิ่งนี้ไม่สามารถแก้ไขปัญหาได้ ข้อเสนอแนะใด ๆ ?


6
แทนที่จะ<add key="owin:AppStartup" value="false"></add>ลอง<add key="owin:AutomaticAppStartup" value="false"></add>ดูว่าได้ผลหรือไม่? นอกจากนี้ลิงก์บางส่วนเพื่อช่วย: OWIN Startup Class DetectionและOwin มีคลาสเริ่มต้นใน web.config (ไม่มีการค้นหาการเริ่มต้นอัตโนมัติ)
Keyur PATEL

นั่นเป็นเคล็ดลับ ขอบคุณสำหรับแหล่งข้อมูล ความกตัญญูของฉัน @KeyurPATEL
NVA

2
ฉันคิดว่าคุณไม่มีไฟล์ startup.cs
Kurkula

2
Kurkula ถูกต้องอย่างแน่นอน คุณไม่ได้ติดตั้งระบบตรวจสอบสิทธิ์ ASP.net เพียงเพื่อทิ้งระบบเมื่อเริ่มต้นระบบ คุณไม่มีไฟล์ startup.cs ที่รากของโครงการ ใส่รหัสนี้ในไฟล์. --------------- โดยใช้ Microsoft.Owin; ใช้ Owin; [แอสเซมบลี: OwinStartupAttribute (typeof (YOURPROJECT.Startup))] namespace YOURPROJECT {public partial class Startup {public void Configuration (IAppBuilder app) {ConfigureAuth (app); }}}
Paras Parmar

คำตอบ:


172

เพิ่มรหัสนี้ในweb.configภายใต้<configuration>แท็กดังแสดงในภาพด้านล่าง ข้อผิดพลาดของคุณควรจะหายไป

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

ตรวจสอบภาพด้านล่าง


4
นี่คือวิธีแก้ปัญหาหรืออย่างน้อยวิธีนี้ก็แก้ปัญหาของฉันได้ โปรดทำเครื่องหมายคำตอบว่าเป็นวิธีแก้ปัญหา อันนี้น่าจะอยู่บนสุด ...
เมสัน

1
ขอบคุณสิ่งนี้ได้ผล แต่มีใครบอกฉันได้ไหมว่าฉันสูญเสียอะไรโดยตั้งค่าการตั้งค่านี้เป็นเท็จ
IKriKan

84

ฉันต้องการกำจัด OWIN ในโครงการ:

  1. ลบการอ้างอิง OWIN และแพ็คเกจ Nuget จากโปรเจ็กต์
  2. โครงการ Clean & Rebuild
  3. เรียกใช้แอป

จากนั้นฉันได้รับข้อผิดพลาด OWIN ขั้นตอนเหล่านี้ไม่ได้ทำงานเพราะ OWIN.dll ยังคงอยู่ใน bin / ไดเรกทอรี

การแก้ไข:

  1. ลบ bin / ไดเร็กทอรีด้วยตนเอง
  2. สร้างโครงการใหม่

13
lol - การลบโฟลเดอร์ bin และ obj เป็นการแก้ไขข้อผิดพลาดในการพึ่งพาแปลก ๆ เสมอ
matt.fc

4
ก่อนหน้านี้ฉันได้ดาวน์โหลดและลองใช้ SignalR nuget ซึ่งในทางกลับกันได้เพิ่ม owin nuget แพ็กเกจถูกลบ แต่ฉันต้องลบโฟลเดอร์ bin ด้วยเพื่อให้มันใช้งานได้
จำนอง

มาที่นี่หลังจากติดตั้ง SignalR และยกเลิกความพยายาม ขอขอบคุณ.
John Gerdsen

ง่ายและรวดเร็ว ทำงานให้ฉัน
Dash

ถอนการติดตั้ง owin แพ็กเกจจะช่วยได้เช่นกันหรือถอดกำลังทั้งหมดที่มี owin กับพวกเขาจากการอ้างอิงจะช่วย
Heemanshu Bhalla

24

สำหรับผู้ที่ต้องการเริ่มต้นใช้<add key="owin:AutomaticAppStartup" value="false" />งานไม่ได้ แต่สิ่งต่อไปนี้ใช้ได้ผลสำหรับฉัน

  1. หากคุณมีคลาสบางส่วน "Startup" ในไฟล์ Startup.Auth ของคุณให้สร้างคลาส Startup บางส่วนในรูทของโปรเจ็กต์ของคุณ

  2. กำหนดแอตทริบิวต์แอสเซมบลี owinstartup ที่ชี้ไปที่คลาสนั้น

  3. สร้างวิธีการ "Configuration"

  4. สร้างแอปพลิเคชันของคุณใหม่

คุณยังสามารถสร้างเมธอด "การกำหนดค่า" และเพิ่มแอตทริบิวต์แอสเซมบลีใน Startup.Auth แต่การทำเช่นนี้จะช่วยให้คุณแยกคลาส Startup ของคุณโดยใช้ประโยชน์จากการแบ่งนิยามคลาส C # อ่านเพิ่มเติมที่นี่: https://docs.microsoft.com/en-us/dotnet/csharp/programming-guide/classes-and-structs/partial-classes-and-methods

นี่คือลักษณะของไฟล์ Startup.cs ของฉัน:

using Microsoft.Owin;
using Owin;

[assembly: OwinStartupAttribute(typeof(ProjectNameSpace.Startup))]

namespace ProjectNameSpace
{
    public partial class Startup
    {
        public void Configuration(IAppBuilder app)
        {
            ConfigureAuth(app);
        }
    }
}

สิ่งนี้ใช้ได้ผลสำหรับฉันฉันตระหนักว่าสิ่งนี้เกิดขึ้นเมื่อโครงการมีจุดอยู่ในชื่อ ดังนั้นหากเนมสเปซเหมือนกับ "namespace ProjectNameSpace.ApiRest" ดังนั้นการกำหนดแอสเซมบลีเหมือนในตัวอย่างของคุณจะแก้ไขปัญหาได้
karique



3

ฉันได้รับข้อผิดพลาดนี้เนื่องจากมีช่องว่างเพิ่มเติมในโค้ด

แทน

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

มันเป็น

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


3

ตรวจสอบว่าคุณได้สร้างคลาสStartupในโปรเจ็กต์ของคุณหรือไม่ นี่คือตัวอย่าง:

using Microsoft.Owin;
using Owin;

[assembly: OwinStartupAttribute(typeof({project_name}.Startup))]

namespace AuctionPortal
{
    public partial class Startup
    {
        public void Configuration(IAppBuilder app)
        {
            ConfigureAuth(app);
        }
    }
}

สำหรับการใช้ประโยชน์จาก ASP.net Identity นี่คือทางออก
Paras Parmar

2

เพียงแค่เปลี่ยน

        using (WebApp.Start(url))

ด้วย

        using (WebApp.Start<Startup>(url))

แก้ปัญหาของฉัน คลาสที่ชื่อว่า Startup ถูกนำไปใช้แล้ว ดังกล่าวข้างต้นโดย @robthedev


2

เพิ่มคีย์ต่อไปนี้ใน Web.config จะลบรหัส

<appSettings>

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

1

ตรวจสอบว่าคุณได้เลือกโครงการเริ่มต้นที่ถูกต้อง ฉันมีโครงการ web api เมื่อเริ่มต้น นั่นทำให้เกิดข้อผิดพลาดนี้


1

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

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

หลังแท็ก <appSettings>

และหากหลังจากนั้นข้อผิดพลาดถัดไปจะปรากฏขึ้น:

HTTP Error 401.0 - ข้อความแสดงข้อผิดพลาดที่ไม่ได้รับอนุญาต

เพิ่มรหัสถัดไปหลังแท็กที่<system.web>สามารถอยู่ที่จุดเริ่มต้น

<authentication mode="Forms"> <forms loginUrl="~/YourFolderName/yourFileName" timeout="1" /> </authentication>

ในกรณีของฉันคือ:

<authentication mode="Forms"> <forms loginUrl="~/Login/Index" timeout="1" /> </authentication>


0

ฉันลบ DLL ทั้งหมดออกจากสาขาที่ใช้งานไม่ได้จากนั้นฉันก็คัดลอก DDls ทั้งหมดจากสาขาของฉันซึ่งทำงานกับสาขาของฉันซึ่งไม่ได้ทำงาน วิธีนี้ช่วยแก้ปัญหาได้


0

เพียงแค่วางรหัสนี้<add key="owin:AutomaticAppStartup" value="false" /> ใน Web.config Not In web.config มีสอง webconfig ดังนั้นอย่าลืมวางโค้ด ใน Web.Config


0

หากคุณต้องการใช้ signalr คุณต้องเพิ่มstartup.cs Class ในโปรเจ็กต์ของคุณ

คลิกขวาในโครงการของคุณจากนั้นเพิ่มรายการใหม่และเลือกOWIN Startup Class

จากนั้นภายในConfiguration Method Add Code ด้านล่าง

app.MapSignalR();

ฉันหวังว่ามันจะเป็นประโยชน์สำหรับคุณ


0

เพิ่มคลาสStartup.csไปยังรูทของโปรเจ็กต์ด้วยโค้ดถัดไป:

using Microsoft.Owin;
using Owin;

[assembly: OwinStartupAttribute(typeof(ProjectName.Startup))]
namespace ProjectName
{
    public partial class Startup
    {
        public void Configuration(IAppBuilder app)
        {
            ConfigureAuth(app);
        }
    }
}

0

หากปรับใช้กับ Azure และคุณได้รับข้อผิดพลาดนี้ เพียงแค่ลบไฟล์ทั้งหมดบนไซต์ (สำรอง web.config, appsettings.json หรือสิ่งที่คุณไม่ต้องการให้หลวม) และปรับใช้อีกครั้ง มีไฟล์ dll บางไฟล์ที่ไม่ควรอยู่ในไซต์ซึ่งทำให้พอร์ทัล Azure คิดว่าจำเป็นต้องใช้ OWIN


0

เพิ่มโค้ดด้านล่างลงในไฟล์ web.config ของคุณจากนั้นเรียกใช้โครงการ ...

    <runtime>
    <assemblyBinding xmlns="urn:schemas-microsoft-com:asm.v1">
    <dependentAssembly>
    <assemblyIdentity name="Microsoft.Owin.Security" publicKeyToken="31bf3856ad364e35"/>
    <bindingRedirect oldVersion="1.0.0.0-3.0.1.0" newVersion="3.0.1.0"/>
    </dependentAssembly>
    <dependentAssembly>
    <assemblyIdentity name="Microsoft.Owin.Security.OAuth" publicKeyToken="31bf3856ad364e35"/>
    <bindingRedirect oldVersion="1.0.0.0-3.0.1.0" newVersion="3.0.1.0"/>
    </dependentAssembly>
    <dependentAssembly>
    <assemblyIdentity name="Microsoft.Owin.Security.Cookies" publicKeyToken="31bf3856ad364e35"/>
    <bindingRedirect oldVersion="1.0.0.0-3.0.1.0" newVersion="3.0.1.0"/>
    </dependentAssembly>
    <dependentAssembly>
    <assemblyIdentity name="Microsoft.Owin" publicKeyToken="31bf3856ad364e35"/>
    <bindingRedirect oldVersion="1.0.0.0-3.0.1.0" newVersion="3.0.1.0"/>
    </dependentAssembly>
    </runtime>
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.