ASP.NET: ไม่สามารถเรียกวิธีนี้ได้ในระหว่างขั้นตอนการเริ่มต้นก่อนเริ่มของแอปพลิเคชัน


135

ฉันกำลังพยายามทำให้ไซต์ ASP.NET MVC 3 ทำงานบน IIS 6.0

ขณะนี้เมื่อฉันขอเพจจากเซิร์ฟเวอร์มันให้ข้อผิดพลาดต่อไปนี้:

ข้อความแสดงข้อผิดพลาดของโปรแกรมแยกวิเคราะห์: ไม่สามารถเรียกวิธีนี้ได้ในระหว่างขั้นตอนการเริ่มต้นก่อนเริ่มของแอปพลิเคชัน

ในบรรทัดนี้:

<add name="MyMembershipProvider" type="NS.MyMembershipProvider" connectionStringName="MyDatabase" applicationName="/MySite"/>

ฉันนิ่งงันและไม่มีเงื่อนงำเกี่ยวกับวงจรชีวิตของแอปพลิเคชัน ASP.NET มากนักนับประสาความแตกต่างระหว่าง 6.0 และ 7.0 การอ่านผ่านหน้า MSDN ดูเหมือนจะไม่ช่วยอะไรมากนัก

ใครมีข้อมูลเชิงลึกหรือลิงค์ที่ดีสำหรับการตรวจสอบ? :)


1
ฉันมีปัญหาเดียวกันกับ MVC 2 บนเว็บเซิร์ฟเวอร์ VS localhost (Cassini)
Morten Christiansen

1
ปัญหาเดียวกันนี้ (และความละเอียด) ดูเหมือนจะใช้ได้กับ MVC 3 บน IIS 7.0 เช่นกัน
CrazyPyro

2
มีปัญหานี้กับ MVC4 และ IIS6 ด้วยโครงการใหม่ แก้ไขโดยการลบ webmatrix * ดูคำตอบด้านล่าง
Andrew Backer

ฉันมีข้อผิดพลาดเดียวกัน แต่ไม่ใช่ในบริบทของผู้ให้บริการสมาชิกดังนั้นคำตอบที่ได้รับการยอมรับจึงไม่สามารถช่วยได้ ปรากฎว่าฉันทำผิดพลาดโง่ ๆ โดยไม่ระบุการประกอบในส่วนการกำหนดค่า ฉันเปลี่ยนชื่อส่วนเป็น "fully.qualified.name.of.type, assembly.name" เพื่อล้างข้อผิดพลาด
FishesCycle

คำตอบ:


253

เพิ่มสิ่งนี้ใน web.config ของคุณ (ในส่วน appSettings):

<add key="enableSimpleMembership" value="false"/>
<add key="autoFormsAuthentication" value="false"/>

แก้ไข:

สำหรับผู้ที่ถามว่าเหตุใดจึงเป็นปัญหาที่ทราบซึ่งอธิบายไว้ในบันทึกประจำรุ่น mvc 3 รายละเอียดเพิ่มเติมที่นี่


3
ช่วยขยายความหน่อยได้ไหม อยู่ที่ไหนใน web.config กุญแจทำอะไร? ฉันมีปัญหาในการค้นหาเอกสารออนไลน์ของคีย์เหล่านั้น
Kennet Belenky

2
ฉันเห็น. จะกำหนดกฎความปลอดภัยและการเป็นสมาชิกโดยอัตโนมัติดังนั้นคุณต้องลบล้างก่อนที่จะเพิ่มกฎที่กำหนดเอง ยุ่งยาก.
Jonathan Allen

4
ฉันสร้างโปรเจ็กต์ใหม่ข้อผิดพลาดนี้ไม่เกิดขึ้นและฉันไม่จำเป็นต้องเพิ่มคีย์เหล่านี้ ในโครงการที่มีอยู่ฉันต้องเพิ่มคีย์เหล่านี้เพื่อให้ทำงานได้ทำไม ??
ridermansb

2
ทำไม? ใครช่วยลิงค์ไปยังคำอธิบาย / เอกสารประกอบได้ไหม
Matt Kocaj

1
บรรทัดแรกแก้ไขให้ฉันใน MVC4: <add key = "enableSimpleMembership" value = "false" />
angularsen

39

หลังจากอัปเกรดแอปพลิเคชันบางส่วนของฉันจาก ASP.NET MVC3 เป็น MVC4 ฉันได้รับข้อผิดพลาดนี้ เป็นผลมาจากแอสเซมบลี WebMatrix (WebMatrix.WebData.dll และ WebMatrix.Data.dll) ฉันลบการอ้างอิงและแอสเซมบลีเหล่านั้นออกจากไดเร็กทอรี / bin และนั่นก็ดูแลปัญหา


2
@rboarman - สิ่งนี้ได้แก้ไขให้ฉันซ้ำแล้วซ้ำเล่า คุณแน่ใจหรือไม่ว่าแอสเซมบลีไม่ได้อยู่ในไดเร็กทอรี / bin
Justin Helgerson

การเพิ่มคีย์ตามที่อธิบายไว้ข้างต้นได้รับการแก้ไข การปรากฏตัวของ WebMatrix.WebData.dll และ WebMatrix.Data.dll ไม่ได้สร้างความแตกต่างทั้งสองวิธี
rboarman

สิ่งนี้แก้ไขให้ฉันเมื่อฉันอัปเกรดจาก MVC4RC เป็น RTM ฉันเริ่มต้นด้วยการสร้างโปรเจ็กต์ใหม่และคัดลอกบิตที่เกี่ยวข้องทั้งหมด ฉันไม่ได้ทำการเปลี่ยนแปลงโค้ดและ web.config ก็ไม่มีการเปลี่ยนแปลงที่สำคัญเช่นกัน แปลก.
Andrew Backer

1
แก้ไขให้ฉัน ฉันอยู่ในสถานการณ์ที่ฉันติดตั้งบางอย่างสำหรับ Azure สร้างโปรเจ็กต์ตัดสินใจว่านั่นไม่ใช่สิ่งที่ฉันต้องการและทำการเลิกทำผ่าน TFS ดังนั้นรหัสทั้งหมดของฉันจึงเป็นสิ่งที่บ่งบอกถึงสิ่งที่มันใช้งานได้ อย่างไรก็ตามโฟลเดอร์ bin ของฉันหนักกว่าเล็กน้อย การล้างแอสเซมบลี WebMatrix ด้วยตนเอง (ตรงข้ามกับการเรียก Clean ในโปรเจ็กต์) ขอบคุณ Ek0nomik
Yetti

ขอบคุณ. สิ่งนี้แก้ไขให้ฉัน
corix010

8

@ Ek0nomik อยู่พอดีเลย เราย้ายจากที่MembershipProviderใหม่ExtendedMembershipProviderเพื่อให้เราสามารถใช้ประโยชน์จากฟังก์ชันใหม่บางอย่างที่มีให้ในเนมสเปซWebMatrix โดยค่าเริ่มต้น Simple Membership ถูกเปิดใช้งานด้วยเหตุผลบางประการดังนั้นเราจึงต้องปิดการใช้งานอย่างชัดเจนเนื่องจากเราไม่ต้องการไปไกลถึงการใช้ไฟล์SimpleMembershipProvider.

สิ่งที่เราต้องทำคือเพิ่มสิ่งนี้ลงใน web.config:

<add key="enableSimpleMembership" value="false"/>

การเปิดใช้งาน Simple Membership ทำให้โค้ดการเริ่มต้นของ Provider ทำงานก่อนที่ตัวจัดการ Application_Start โครงสร้างแอปของเราต้องการให้ App_Start เป็นสิ่งแรกในการดำเนินการ โดยส่วนตัวแล้วฉันมักจะคาดหวังสิ่งนี้ แต่การเป็นสมาชิกแบบง่ายจะเปลี่ยนพฤติกรรมนี้ ระวัง.


6

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


2

สาเหตุนี้เกิดจากการเรียก Reflection จำนวนหนึ่งที่เกิดขึ้นเร็วเกินไปในแอปพลิเคชัน มันก็เกิดขึ้นกับเว็บคำแนะนำ Config ในคำตอบอื่น ๆ ทำให้ไม่สามารถเรียก Reflection ได้ อย่างไรก็ตามในกรณีของฉัน:

ฉันใช้ Entity Framework update-databaseและวิ่ง ฉันได้:

ไม่สามารถเรียกวิธีนี้ในระหว่างขั้นตอนการเริ่มต้นก่อนเริ่มต้นของแอปพลิเคชัน

ปรากฎว่าเรามีโค้ดที่ใช้ไลบรารีซึ่งเพิ่งแก้ไขเพื่อรับโค้ดทั้งหมดในเนมสเปซ / โปรเจ็กต์ทั้งหมด โดยเฉพาะเรียกว่า:

System.Web.Compilation.BuildManager.GetReferencedAssemblies()

Kaboom นั่นทำให้เกิดข้อผิดพลาดที่คลุมเครือนี้ EF Migrations ทำงานในโซนแปลกซึ่งแอปพลิเคชันทำงานครึ่งหนึ่งและไม่ทำงานครึ่งหนึ่งซึ่งหมายความว่าวิธีการข้างต้นจะไม่สามารถเรียกได้โดยการโยกย้ายรหัสใด ๆ ที่เรียกใช้

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