ดังที่คุณได้กล่าวไปแล้ว การกรองคำขอของ IIS น่าจะช่วยคุณได้
คุณกำลังใช้ไซต์ asp.net MVC ดังนั้น URL ที่ร้องขอจะถูกตรวจสอบเทียบกับเส้นทางที่กำหนดค่าไว้ทั้งหมด ซึ่งหมายความว่าชั้นแอปพลิเคชันของคุณจะถูกใช้เพื่อตอบสนองคำขอด้วย 404
ตามหลักการแล้ว คุณต้องการ 404 ก่อนหน้านี้ในไปป์ไลน์คำขอของคุณ ก่อนที่ชั้นแอปพลิเคชันของคุณจะถูกเรียกใช้
มีหลายตัวเลือก:
<system.webServer>
<security>
<requestFiltering>
<denyUrlSequences>
<add sequence="/system/login" />
</denyUrlSequences>
<hiddenSegments>
<add segment="system" />
</hiddenSegments>
<filteringRules>
<filteringRule name="systemLogin" scanUrl="true" scanQueryString="false">
<denyStrings>
<add string="system/login" />
</denyStrings>
</filteringRule>
</filteringRules>
</requestFiltering>
</security>
</system.webServer>
คุณควรทดลองว่าอันไหนดีที่สุดสำหรับคุณและไม่ส่งผลกระทบต่อแอปพลิเคชันของคุณเอง
หากคุณเปิดใช้งานการติดตามคำขอที่ล้มเหลว คุณจะเห็นตำแหน่งในไปป์ไลน์ที่สร้างการตอบกลับ 404 ในการทดสอบของฉันโดยไม่ใช้การกรองคำขอ 404 ถูกสร้างขึ้นที่ตำแหน่ง 232 ในไพพ์ลิง โดยใช้การกรองคำขอ ซึ่งสร้างขึ้นที่ตำแหน่ง 72 ก่อนหน้านี้และก่อนที่ชั้นแอปพลิเคชันของคุณจะถูกเรียกใช้
ใช่ ไฟร์วอลล์ของเว็บที่อยู่ด้านหน้าเซิร์ฟเวอร์ IIS ของคุณจะดียิ่งขึ้น แต่ขาด IIS ที่สามารถตรวจจับคำขอเหล่านี้ก่อนที่จะไปถึงแอปพลิเคชันของคุณ
ตรวจสอบให้แน่ใจว่าหน้าแสดงข้อผิดพลาดที่กำหนดเองของคุณได้รับการกำหนดค่าอย่างถูกต้องและไม่ได้ระบุอย่างอื่นนอกจาก 404