2009-07-10 5 views
9

내가이 일을하여 컨트롤러에있는 모든 액션 메소드에 대한 요청 유효성 검사를 해제하려고에 대한 요청 유효성 검사를 해제 할 수 없습니다 이것은 가능하고 이런 식으로 할 것을 말하지만, 어떤 이유로 그것은 작동하지 않습니다.나는 ASP.NET MVC 컨트롤러

A potentially dangerous Request.Form value was detected from the client (text=<b>").

또한 개인 방법에 속성을 부착하여 작동하지 않는 : 나는 텍스트 상자를 통해 모든 HTML (심지어 간단한 <B> 태그)를 제출하는 경우

, 나는 오류가 발생합니다.

컨트롤러에 대한 요청 확인을 어떻게 비활성화 할 수 있습니까?

편집

내가 테스트 서버에 내장 VS2008하고 있어요.

+0

, 당신은 더 많은 세부 사항을 제공해야합니다. IIS 또는 Cassini에서 실행 중이십니까? MVC v1.0을 실행하고 있습니까? 실패한 동작의 메서드 서명은 무엇입니까? – GalacticCowboy

+4

나는 정확한 질문을 한 사람을 만났을 때 사랑한다. 다른 방문자에게는 적용되지 않는다는 사실 만 알고있다. FML. –

답변

14

클래스 정의와 동작 방법 모두 내 컴퓨터에서 테스트했는데 두 경우 모두 나를 위해 작동했습니다. 당신의 뷰가 당신의 방법/컨트롤러에 확실한가요? GET 메서드 나 POST 메서드에 특성을 추가하고 있습니까?

[AcceptVerbs(HttpVerbs.Post)] 
[ValidateInput(false)] 
public ActionResult MyAction (int id, string content) { 
    // ... 
} 
+0

원래의 질문에서, 나는 그렇게했다고 말했다. 그리고 내 참조 인 Apress Pro ASP.NET MVC Framework에는 "특정 동작 방법이나 특정 컨트롤러에 대해 중 하나를 사용하지 않으려면 [ValidateInput] 필터 을 다음과 같이 사용할 수 있습니다. [ ValidateInput (false)] 공용 클래스 MyController : 컨트롤러 {...} " –

+0

참조 http://stackoverflow.com/questions/807662/why-is-validateinputfalse-not-working –

+2

죄송합니다, Ronnie. 메서드 나 클래스에 특성을 넣든 내 컴퓨터에서 작동합니다. –

2

프로 ASP.NET MVC 프레임 워크 (p466)는 다음이 작동하도록되어 말한다 :

public class MyController : Controller 
{ 
    public MyController() { 
     ValidateRequest = false; 
    } 
} 
+0

인텔리 전트 또는 컴파일되지 않습니다. 나는 그것을 (intellisense를하는) action 메소드에 넣으려고했지만, 작동하지 않았다. –

+0

"ValidateRequest = false;" 생성자에 있어야합니다. 나는 그것을 내 컨트롤러 중 하나에서 시도했지만 잘못 기록했다. – keithm

+0

생성자에 넣으면 작동합니다. –

0

당신이 당신의 컨트롤러 파일보기 파일을 게시 할 수 있습니다.

이것은 작동합니다.

MytestController --------------------------------

using System; 
using System.Collections.Generic; 
using System.Linq; 
using System.Web; 
using System.Web.Mvc; 
using System.Web.Mvc.Ajax; 

namespace testapp.Controllers 
{ 
    [ValidateInput(false)] 
    public class MyTestController : Controller 
    { 

     public ActionResult Index() 
     { 
      return View(); 
     } 

    } 
} 

MYTEST (지수) - -------------------------------------------------- ---

<%@ Page Language="C#" Inherits="System.Web.Mvc.ViewPage" %> 

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> 

<html xmlns="http://www.w3.org/1999/xhtml" > 
<head runat="server"> 
    <title>Index</title> 
</head> 
<body> 
<% using (Html.BeginForm()) { %> 
<%= Html.TextBox("test")%> 
<button type="submit" >Submit</button> 
<%} %> 
</body> 
</html> 
+0

asp.net mvc 2에 대한 샘플이 작동하지 않습니다. – IEnumerator

12

당신이뿐만 아니라의 Web.config를 수정해야 할 작업을 만들려면 : 작동하지 않는 모든 재료를 바탕으로

<system.web> 
    <httpRuntime requestValidationMode="2.0"/> 
    ... 
</system.web> 
+0

ASP.NET MVC 1.0 프로젝트를 1 년 넘게 프로덕션 환경에 배포했는데, 오늘 밤 클라이언트에서 WYSIWYG 편집기를 사용하는 양식 중 하나가 제출하십시오. 나는 사이트가 배치되고 그것이 최근까지 잘 작동했다면 [ValidateInput (false)]에 대한 액션을 보았습니다. 호스팅 제공 업체가 끝날 무언가를 변경해야합니다. 얀이 제안한대로 system.web에 httpRuntime 태그를 추가하고 내 문제를 해결했습니다. –