ฉันมีแบบฟอร์มที่ฉันใช้ ckeditor แบบฟอร์มนี้ใช้งานได้ดีที่ Asp.Net 2.0 และ 3.5 แต่ตอนนี้มันใช้งานไม่ได้ใน Asp.Net 4+ ฉันมีคำสั่ง ValidateRequest = "false" ข้อเสนอแนะใด ๆ
ฉันมีแบบฟอร์มที่ฉันใช้ ckeditor แบบฟอร์มนี้ใช้งานได้ดีที่ Asp.Net 2.0 และ 3.5 แต่ตอนนี้มันใช้งานไม่ได้ใน Asp.Net 4+ ฉันมีคำสั่ง ValidateRequest = "false" ข้อเสนอแนะใด ๆ
คำตอบ:
พบวิธีแก้ไขที่หน้าข้อผิดพลาด เพียงแค่ต้องการเพิ่ม requestValidationMode = "2.0"
<system.web>
<compilation debug="true" targetFramework="4.0" />
<httpRuntime requestValidationMode="2.0" />
</system.web>
ข้อมูล MSDN: คุณสมบัติ HttpRuntimeSection.RequestValidationMode
มีวิธีเปลี่ยนการตรวจสอบกลับเป็น 2.0 สำหรับหนึ่งหน้า เพียงเพิ่มรหัสด้านล่างลงใน web.config ของคุณ:
<configuration>
<location path="XX/YY">
<system.web>
<httpRuntime requestValidationMode="2.0" />
</system.web>
</location>
...
the rest of your configuration
...
</configuration>
ฉันรู้ว่านี้เป็นคำถามที่เก่า แต่ถ้าคุณพบปัญหานี้ใน MVC 3 แล้วคุณสามารถตกแต่งของคุณActionMethod
ด้วย[ValidateInput(false)]
และเพียงแค่ปิดการตรวจสอบคำขอสำหรับเดียวActionMethod
ซึ่งเป็นประโยชน์ และคุณไม่จำเป็นต้องทำการเปลี่ยนแปลงใด ๆ กับweb.config
ไฟล์ดังนั้นคุณยังสามารถใช้การตรวจสอบคำขอ. NET 4 ได้ทุกที่
เช่น
[ValidateInput(false)]
public ActionMethod Edit(int id, string value)
{
// Do your own checking of value since it could contain XSS stuff!
return View();
}
สิ่งนี้ทำงานโดยไม่เปลี่ยนโหมดการตรวจสอบ
ที่คุณต้องใช้ผู้ช่วยจากSystem.Web.Helpers.Validation.Unvalidated
System.Web.WebPages.dll
มันจะส่งคืนUnvalidatedRequestValues
วัตถุที่อนุญาตให้เข้าถึงแบบฟอร์มและ QueryString โดยไม่มีการตรวจสอบความถูกต้อง
ตัวอย่างเช่น,
var queryValue = Server.UrlDecode(Request.Unvalidated("MyQueryKey"));
ทำงานได้สำหรับฉันสำหรับ MVC3 และ. NET 4
โปรดทราบว่าวิธีการอื่นคือการคงไว้ซึ่งพฤติกรรมการตรวจสอบความถูกต้อง 4.0 แต่เพื่อกำหนดคลาสของคุณเองที่มาจากRequestValidator
และตั้งค่า:
<httpRuntime requestValidationType="YourNamespace.YourValidator" />
(อยู่ที่ไหนYourNamespace.YourValidator
ดีคุณควรจะเดาได้ ... )
วิธีนี้คุณจะได้รับประโยชน์จากพฤติกรรม 4.0s (โดยเฉพาะอย่างยิ่งการตรวจสอบความถูกต้องเกิดขึ้นก่อนหน้านี้ในการประมวลผล) ในขณะที่ยังช่วยให้คำขอที่คุณต้องการให้ผ่านผ่าน