none
asp.net 4 에서 requestValidationMode RRS feed

  • 질문

  • html 에디터에서 작성한 코드를 form 으로 날리기 위해서 validation 해제하려고 하는데 4.0 에서는 설정을 해도 안되네요

    web.config 에

      <system.web>
        <compilation debug="false" targetFramework="4.0" />
        <httpRuntime requestValidationMode="2.0"/>
        <pages validateRequest="false" />
      </system.web>

    이렇게 해주면 validation 체크를 하지 않는 걸로 알고 있는데 이게 작동을 안하는듯 하네요..

    cshtml 에서 다 코딩처리를 하고 mvc 모델도 사용안합니다.  모두 cshtml 에서 처리하는 구조로 하고 있는데 위의 세팅이 먹질 않네요.. 버근가요? 아님 다른 이유가 있을까요?

    --------------------------

    에러코드

    [HttpRequestValidationException (0x80004005): 클라이언트 (cpage="<div id="centerColum...")에서 잠재적 위험이 있는 Request.Form 값을 발견했습니다.]
       System.Web.HttpRequest.ValidateString(String value, String collectionKey, RequestValidationSource requestCollection) +8734868
       Microsoft.Web.Infrastructure.DynamicValidationHelper.DeferredValidator.EnsureEntryValidated(NameObjectEntryWrapper nameObjectEntry) +172
       Microsoft.Web.Infrastructure.DynamicValidationHelper.ValidatingHashtable.get_Item(Object key) +55
       System.Collections.Specialized.NameObjectCollectionBase.FindEntry(String key) +20
       System.Collections.Specialized.NameValueCollection.Get(String name) +8
       System.Collections.Specialized.NameValueCollection.get_Item(String name) +10
       ASP.CMSEdit_cshtml.Execute() in d:\missingchild\src\admin\CMSEdit.cshtml:26
       System.Web.WebPages.WebPageBase.ExecutePageHierarchy() +172
       System.Web.WebPages.WebPage.ExecutePageHierarchy(IEnumerable`1 executors) +68
       System.Web.WebPages.WebPage.ExecutePageHierarchy() +156
       System.Web.WebPages.WebPageBase.ExecutePageHierarchy(WebPageContext pageContext, TextWriter writer, WebPageRenderingBase startPage) +74
       System.Web.WebPages.WebPageHttpHandler.ProcessRequestInternal(HttpContext context) +247

    2010년 12월 3일 금요일 오전 7:11

모든 응답

  • 비슷한 문제로 보이는 포럼 스레드를 찾았으며 해당 스레드는 MVC RC3에 관한 것으로 버전에 일부 차이점이 있을 수는 있겠으나, CSHTML 만을 이용하게 된다 하더라도 내부적으로는 Controller의 중계가 개입될 수 있을 것으로 예상됩니다. 이 경우, Controller의 기본 설정은 WEB.CONFIG의 Page Validation과는 관계없이 검사를 하도록 되어있기 때문에 올려주신 질문과 같은 현상이 나타나는게 아닌가 합니다.

    using System.Web.Helpers;

     [HttpPost]
     [ValidateInput(false)]
     public ViewResult Edit(ContentTemplateView contentTemplateView)
     {
    FormCollection collection = new FormCollection(Request.Unvalidated().Form);
     }

    ValidateInput 어트리뷰트를 지정한 고유의 컨트롤러를 추가하시고, 들어온 요청에 대하여 Unvalidated() 도우미 메서드를 호출하여 검사를 생략하도록 만듦으로서 문제를 해결하실 수 있을 것으로 봅니다. 더 자세한 정보를 안내해 드리기 위하여 관련 포럼 스레드 URL 2개도 첨부합니다.

    A. http://stackoverflow.com/questions/4361907/asp-net-mvc-3-validaterequestfalse-not-working-with-formcollection

    B. http://forums.asp.net/p/1621677/4163625.aspx

    2010년 12월 13일 월요일 오전 8:06