ข้อผิดพลาด HTTP MVC4 403.14 - ถูกห้าม


89

ฉันได้สร้างเว็บแอป. net4.5 ASP.NET MVC4 ซึ่งทำงานได้ดีในเครื่อง (เซิร์ฟเวอร์ IIS Express & dev) แต่เมื่อฉันปรับใช้กับเว็บเซิร์ฟเวอร์ของฉันมันจะแสดงข้อผิดพลาด 403 ฉันได้ติดตั้ง. Net 4.5RC บนเซิร์ฟเวอร์และลองใช้ aspnet_regiis -i บิตที่ทุกคนแนะนำสำหรับปัญหาของพวกเขากับ MVC / .Net เวอร์ชันก่อนหน้า แต่ก็ไม่ได้ช่วยอะไร

ความคิดใด ๆ ?

แก้ไข : ข้อมูลเพิ่มเติมเกี่ยวกับสถานการณ์ เซิร์ฟเวอร์เป็น 32 บิตและฉันมีแอปพลิเคชัน MVC3 อื่น ๆ อีก 4 รายการที่ทำงานได้ดี มันเป็นเพียงแอป MVC4 ของฉันที่ไม่ทำงาน


ฉันพบปัญหาเดียวกันนี้เมื่อฉันสร้างแอปasp.net 4.5 Web Formsใหม่ มันทำงานได้ดีในเครื่อง (IIS 7.5) แต่เมื่อนำไปใช้กับเซิร์ฟเวอร์ทดสอบ (รวมถึง IIS 7.5) ไฟล์ javascript และ css ที่รวมและลดขนาดส่วนใหญ่ของฉันไม่สามารถโหลดได้ด้วย 404 Not Found คำตอบด้านล่างเกี่ยวกับ runAllManagedModulesForAllRequests ช่วยแก้ปัญหาให้ฉันได้!
ClearCloud8

ฉันอาจตอบคำถามนี้ได้ที่: stackoverflow.com/questions/24343788/…
fsbf

<system.webServer> <module runAllManagedModulesForAllRequests = "true" /> </system.webServer>
Jinto John

คำตอบ:


172

ลอง

<system.webServer>
   <modules runAllManagedModulesForAllRequests="true"/> 
 </system.webServer>

ผ่าน

/server/405395/unable-to-get-anything-except-403-from-a-net-4-5- เว็บไซต์


1
เมื่อมีสิ่งนั้นทำทุกอย่างและยังคงมีเพียงไซต์ MVC 4 เท่านั้นที่ทำงานได้ จะต้องมีเคล็ดลับอื่น ๆ ที่ต้องใช้เพื่อให้ได้ผล
Maxim V.Pavlov

1
นี้. ลองใช้โซลูชันสต็อกอื่น ๆ ทั้งหมดโดยไม่มีความสุข แต่นี่เป็นวิธีที่จัดการปัญหาได้
Julia Hayward

1
เพื่อนรักฉันทำ แต่มันไม่ได้ผล จริงๆแล้วฉันทำงานกับ MVC 4 และ VisualStudio 2012 โครงการของฉันทำงานได้ดีจนถึงเมื่อวานนี้ แต่หลังจากมีการเปลี่ยนแปลงรหัสของฉันตามปกติข้อผิดพลาดนี้ก็เพิ่มขึ้นในหน้าเริ่มต้น (หน้าแรก / ดัชนี) ขอตัวช่วยได้มั้ย
คะ

4
การแก้ไขนี้ไม่เหมาะสมสำหรับปัญหานี้ (ดูลิงก์ในคำตอบของ Jason Koopmans) ดีกว่ามากคือการดาวน์โหลดโปรแกรมแก้ไขด่วนที่เกี่ยวข้องที่นี่microsoft.com/en-us/download/…
Ahmad Ibrahim

@ AhmadIbrahim มันเป็นวิธีแก้ปัญหาในความเป็นจริง การแก้ไขมีไว้สำหรับ 64 บิตเท่านั้นคำถามระบุ 32 บิตอย่างชัดเจน มีการกำหนดค่าบางอย่างที่ RAMMFAR เป็นโซลูชันการทำงานที่น่าเชื่อถือที่สุดและเพิ่มการโหลดเซิร์ฟเวอร์น้อยที่สุดหากใช้ CDN อย่างเหมาะสม
MarkKGreenway

22

ข้อผิดพลาด 403.14 คือรหัสข้อผิดพลาด HTTP ที่ไม่ได้รับอนุญาตให้แสดงรายการเนื้อหาของไดเร็กทอรี โปรดแน่ใจว่า

  1. คุณได้ตั้งค่าเว็บไซต์เป็นแอปพลิเคชันใน IIS
  2. คุณมี. NET 4.5 ติดตั้งบนเซิร์ฟเวอร์
  3. คุณได้ตั้งค่าแอปพลิเคชันพูลเพื่อเรียกใช้. NET Framework เวอร์ชันที่เหมาะสม (กล่าวคือไม่ได้ตั้งค่าเป็น. NET 2.0
  4. คุณกำลังใช้ไปป์ไลน์รวมบนแอปพลิเคชันพูลของคุณ
  5. .NET 4.5 ได้รับการลงทะเบียนจริงใน IIS โปรดดูโพสต์นี้สำหรับปัญหา / วิธีแก้ไขที่คล้ายกัน

โดยปกติแล้ว a และ d เป็นปัญหาที่ใหญ่ที่สุดเกี่ยวกับการปรับใช้ MVC กับ IIS


1. ฉันไม่ได้ตั้งค่าเว็บไซต์เป็นแอปพลิเคชัน 2. ฉันติดตั้ง. net 4.5 แล้ว 3. มีกลุ่มแอปของฉันที่กำหนดเป้าหมายกรอบงานที่ถูกต้อง 4. พูลของฉันถูกตั้งค่าให้ใช้แบบคลาสสิกเปลี่ยนเป็นแบบบูรณาการ แต่ไม่ได้ช่วย 5. ฉันค่อนข้างแน่ใจว่าลงทะเบียน 4.5 แล้ว
mithun_daa

1
@mithun_daa - หากคุณไม่ได้ตั้งค่าเว็บไซต์ของคุณเป็นแอปพลิเคชันมันค่อนข้างง่าย -> คลิกขวาที่ไดเรกทอรี / เว็บไซต์เสมือนและแปลงเป็นแอปพลิเคชัน (หรือเพิ่มแอปพลิเคชันคำศัพท์จะพาฉันหนีไปในขณะนี้)
ทอมมี่

นี่เป็นสิ่งเฉพาะของ MVC4 หรือไม่? สาเหตุที่ฉันไม่เคยตั้งค่าโครงการ MVC3 เป็นแอปพลิเคชันและทำงานได้ดี
mithun_daa

อาจเป็นไปได้ว่าคุณกำลังปรับใช้อย่างไร -> แต่ต้องตั้งค่าเว็บแอปพลิเคชัน. NET เป็นแอปพลิเคชันใน IIS อย่างไรก็ตามหากคุณเพียงวางสิ่งเหล่านี้ไว้ในเว็บไซต์เริ่มต้นแสดงว่ามันกำลังทำงานภายใต้แอปพลิเคชันเว็บไซต์เริ่มต้น ตรวจสอบให้แน่ใจว่ามีการกำหนดค่าพูลแอปพลิเคชันของเว็บไซต์เริ่มต้นอย่างถูกต้อง (.NET 4 / integrated) เมื่อคุณสร้างไดเรกทอรีเสมือน / เว็บไซต์เสมือนใน IIS คุณมีตัวเลือกในการตั้งค่าเป็นแอปพลิเคชันของตัวเองเช่นกัน
Tommy

ฉันอาจสับสนคุณ แต่ไม่มีไซต์ใดที่อยู่ภายใต้เว็บไซต์เริ่มต้น ฉันคลิกขวาที่ "Sites" ใน IIS7 แล้วเลือก "Add Web Site" นั่นคือวิธีที่ฉันทำ
mithun_daa

11

บางที ... ถ้าคุณบังเอิญใช้ตัวช่วยสร้างการเผยแพร่ (เหมือนที่ฉันทำ) แล้วเลือกช่องทำเครื่องหมาย "คอมไพล์ล่วงหน้าระหว่างการเผยแพร่" (เหมือนที่ฉันทำ) แล้วพบอาการเดียวกัน ...

ใช่ฉันทุบหัวตัวเอง แต่หลังจากยกเลิกการเลือกช่องนี้การตั้งค่าที่ดูเหมือนจะไม่เกี่ยวข้องอาการทั้งหมดที่อธิบายไว้จะหายไปหลังจากปรับใช้ใหม่

หวังว่าสิ่งนี้จะช่วยแก้ปัญหาบางคนได้


หากคุณมีสิ่งนี้สาเหตุที่เป็นไปได้คือมีไลบรารีภายนอกเวอร์ชันอื่นในสภาพแวดล้อมการใช้งานจริง ฉันมีแอป mvc ของฉันที่คอมไพล์กับ dll ของบุคคลที่สามเวอร์ชันใหม่กว่าและเวอร์ชันเก่ากว่าในเซิร์ฟเวอร์การผลิต ..
ValGe

นี่คือสิ่งที่เด็กชายสงสัยเด็กคนมหัศจรรย์ปรากฏการณ์ที่ผ่านพ้นไม่ได้กษัตริย์มาที่นี่เพื่อ @Brian Kirkpatrick สุภาพสตรีและสุภาพบุรุษ
Luis Villarroel

10

Windows-> Start -> เปิดและปิดคุณสมบัติแม่ม่าย

ตรวจสอบให้แน่ใจว่าคุณได้ตรวจสอบตัวเลือกที่จำเป็นใน

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


6

ก่อนสมัคร

runAllManagedModulesForAllRequests="true"/>

พิจารณาลิงก์ด้านล่างที่แนะนำทางเลือกที่รุนแรงน้อยกว่า ในโพสต์ผู้เขียนเสนอการเปลี่ยนแปลงต่อไปนี้กับ web.config ในพื้นที่:

  <system.webServer>
    <modules>
    <remove name="UrlRoutingModule-4.0" />
    <add name="UrlRoutingModule-4.0" type="System.Web.Routing.UrlRoutingModule" preCondition="" />
    </modules>

http://www.britishdeveloper.co.uk/2010/06/dont-use-modules-runallmanagedmodulesfo.html


นี่คือคำตอบที่แท้จริง ขอบคุณ!
Spivonious

5

มีRefactor -> เปลี่ยนชื่อ Bugใน Visual Studio 2012 ที่เปลี่ยนชื่อ "id" อย่างไม่ถูกต้องภายในค่าสตริงตัวอักษรของพารามิเตอร์ url ใน RouteConfig.cs ของฉัน สิ่งนี้ทำให้เกิด 403.14 ในการตั้งค่าใหม่และถูกต้องในทั้ง Windows Server 2012 และ Windows Server 2008 R2

routes.MapRoute(
    name: "Default",
    url: "{controller}/{action}/{id}",
    defaults: new { controller = "Home", action = "Index", id = UrlParameter.Optional }
);

ถูกเปลี่ยนเป็น

routes.MapRoute(
    name: "Default",
    url: "{controller}/{action}/{renamed_text}",
    defaults: new { controller = "Home", action = "Index", id = UrlParameter.Optional }
);

สำหรับผมผมค้นพบมานานแล้วว่าผมสามารถป้อนnullสำหรับnameพารามิเตอร์เพื่อหลีกเลี่ยงการทำขึ้นชื่อสำหรับทุกเส้นทาง ปรากฎว่าสิ่งนี้ทำให้เกิด 403 ในบางครั้งด้วย (เฉพาะในสภาพแวดล้อม prod ของเรา Win Server 2008 R2 ที่รัน. NET 4.5.1, MVC 5 ในโครงการ VS2013 เพื่อแก้ปัญหาฉันได้เพิ่มชื่อสำหรับแต่ละเส้นทาง
tristankoffee

2

นอกจากนี้คุณยังสามารถรับ 403 ได้หากเมื่อทดสอบกับเซิร์ฟเวอร์ dev คุณใช้ไปป์ไลน์รวมแล้วติดตั้งเป็นโหมดไปป์ไลน์แบบคลาสสิกบนเว็บเซิร์ฟเวอร์ IIS 7.5 ที่ใช้งานอยู่ของคุณฉันก็ไม่มีโฟลเดอร์ app_data ของฉันซึ่งจำเป็นเช่นกัน


2

หากคุณใช้ IIS 8.5 บน Windows 8 หรือ Server 2012 คุณอาจพบว่าการเรียกใช้ mvc 4/5 (.net 4.5) ไม่ทำงานในไดเรกทอรีเสมือน หากคุณสร้างรายการโลคัลโฮสต์ในไฟล์โฮสต์เพื่อชี้กลับไปที่เครื่องโลคัลของคุณจากนั้นชี้เว็บไซต์ IIS ในเครื่องใหม่ไปยังโฟลเดอร์นั้น (ด้วยรายการส่วนหัวโฮสต์ที่ตรงกัน) คุณจะพบว่ามันใช้งานได้


ทำไมต้องโพสต์คำตอบเดียวกันในหลาย ๆ ที่
devnull

8
เพราะฉันพยายามติดตามวิธีแก้ปัญหาและมันเกี่ยวข้องกับทั้งสองอย่าง ช่วยคนจากการตามล่ามัน
Mastro

คุณไม่ควรโพสต์คำตอบที่ซ้ำกัน นั่นคือทั้งหมดที่ฉันสามารถพูดได้
devnull


1

ฉันได้ตั้งค่ากลุ่มแอปพลิเคชันใหม่เป็นDefaultAppPoolใน IIS ซึ่งเห็นได้ชัดว่าใช้Classicไปป์ไลน์กับ.NET v.2.0 .

เพื่อแก้ปัญหาฉันได้สร้าง App Pool ใหม่โดยใช้Integratedไปป์ไลน์และ.NET v4.0. สำหรับแอปพลิเคชันใหม่นี้แล้วทุกอย่างก็เริ่มทำงานตามที่คาดไว้

อย่าลืมกำหนดกลุ่มแอปใหม่นี้ให้กับแอปพลิเคชัน เลือกแอปพลิเคชันใน IIS คลิกBasic Settingsแล้วเลือกกลุ่มแอปใหม่สำหรับแอป


0

สิ่งที่ฉันเห็นบ่อยขึ้นเมื่อเร็ว ๆ นี้คือ IIS และอนุญาตให้แอปพลิเคชัน 32 บิตทำงาน

นี่คือสิ่งที่คุณได้ลอง มิฉะนั้นเราต้องการข้อมูลเพิ่มเติมเกี่ยวกับเวอร์ชันที่ใช้งานจริงและเวอร์ชันเซิร์ฟเวอร์ dev


ฉันขอโทษ แต่ฉันไม่ได้ทำตามที่คุณหมายถึง นี่คือเซิร์ฟเวอร์ 32 บิต ฉันได้อัปเดตโพสต์ของฉันเพื่อเพิ่มข้อมูลเพิ่มเติม
mithun_daa

อ่า ... พวกมันอยู่ใน app_pool แยกกันหรือเปล่า?
MarkKGreenway

ใช่เว็บไซต์ของฉันแต่ละแห่งมีแอปพูลของตัวเอง
mithun_daa

0

ฉันมีปัญหาที่แตกต่างออกไปเล็กน้อยบนเซิร์ฟเวอร์ 2012 ฉันลืมเปิดใช้งาน asp.net 4.5 ดังนั้นหากคุณมีปัญหานี้ให้ตรวจสอบอีกครั้งว่าคุณเปิดใช้งานแล้ว


0

ฉันใช้ Windows Server 2012 R2 บน Azure และ ASP.NET 4.5, IIS 8

ฉันแก้ไขปัญหานี้โดยการถอนการติดตั้งรายการ ASP.NET ทั้งหมดในโปรแกรมและคุณลักษณะจากนั้นติดตั้ง ASP.NET ใหม่เช่นนี้ด้วยตัวจัดการเซิร์ฟเวอร์โดยใช้เพิ่มบทบาทและคุณสมบัติ: เลือกการติดตั้งตามบทบาทหรือตามคุณลักษณะเลือกเซิร์ฟเวอร์ของฉันแล้ว สำหรับ Select Server Role เลือก Web Server (IIS) / Web Server / Application Development จากนั้นคลิกที่ ASP.NET 4.5 ยืนยันการติดตั้งข้อกำหนดเบื้องต้นแล้วติดตั้ง ASP.NET 4.5 ใหม่

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


0

ฉันแก้ปัญหาในการเปิดสตูดิโอภาพขยายข้อมูลอ้างอิงและเปลี่ยนคุณสมบัติ "Copy Local" เป็น "True"

ฉันค้นพบสิ่งนี้เปรียบเทียบ dlls ของเวอร์ชันเก่ากับ Dlls ของเวอร์ชันใหม่ของฉัน (ซึ่งใช้งานไม่ได้)


0

ในกรณีของฉันหน้าเริ่มต้นของแอปพลิเคชันของฉันคือ index.html ซึ่งหายไปจากตัวเลือกเอกสารเริ่มต้น การเพิ่มแก้ไขข้อผิดพลาด 403.14 Forbidden


0

ในกรณีของฉันปัญหาเกิดจาก ActionFilterAttribute ที่กำหนดเองซึ่งเป็นแอตทริบิวต์ตัวกรองส่วนกลางชนิดหนึ่ง แอตทริบิวต์สร้างอินสแตนซ์บริการผ่าน Autofac แต่บริการขัดข้องในตัวสร้าง:

public ActionFilterAttribute()
{
    _service = ContainerManager.Resolve<IService>();
}

public class Service: IService
{ 
    public Service()
    {
        throw new Exception('Oops!');
    }
}

0

ในกรณีของฉันทั้งคุณลักษณะของ Windows หรือaspnet_regiis -iไม่ทำงาน หลังจากใช้เวลาหลายชั่วโมงในการขุดในอินเทอร์เน็ตฉันได้แก้ไขปัญหาของตัวเอง:

  1. ในตัวจัดการ IIS ในโมดูลฉันเปลี่ยนการสืบทอดเป็นโลคัลในโหนด UrlRoutingModule-4.0:

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

  2. ใน web.config ฉันได้วางเคล็ดลับบางอย่างจากฟอรัมนี้:

    <system.webServer>
        <modules runAllManagedModulesForAllRequests="true">
            <remove name="UrlRoutingModule-4.0"></remove>
            <add name="UrlRoutingModule-4.0" type="System.Web.Routing.UrlRoutingModule" preCondition=""></add>
        </modules>
    </system.webServer>
    

หวังว่าจะช่วยได้

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