2014-10-16 3 views
0

나는 아이디 부분에 대한 지금잘못된 요청 - 잘못된 URL HTTP 오류 400 요청 URL은

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

이하, I에 의해 구분 된 데이터의 많은 세트를 결합하고있어 따라 라우팅이 유효하지 않습니다 "-" AES (RijndaelManaged) 암호화로 암호화합니다. 그리고 나는 아래 주소로 UrlEncode를 작성하여 다른 사람에게 이메일을 보냅니다 ...

http://localhost:7777/Product/Invite/%e3%b7%92%e4%97%ad%eb%b6%b3%e3%b7%90%eb%b2%8c%e2%aa%ad%e7%86%87%e9%b6%9e%ec%ae%aa%ec%a7%a2%ec%9a%a0%ec%ba%be%e2%89%bc%e5%ba%aa%ee%be%a8%ee%9f%a8%ea%aa%b6%e3%87%83%e3%8c%b4%eb%99%89%e8%8f%bb%e4%b0%ab%ef%bf%bd%e7%a0%99 

하지만 클릭하면 오류가 발생합니다. 다음은

Bad Request - Invalid URL 

HTTP Error 400. The request URL is invalid. 

string data1 = email.EmailID + " - /" + events.EventID + "-" + DateTime.Now.ToString("yyyyMMddhhmm") + "-" + events.MemberID; 

var encoding = new UTF8Encoding(false, true); 
byte[] cypherBytes = advEncryProvider.Encrypt(encoding.GetBytes(data1)); 
string dataEncodedString = HttpUtility.UrlEncode(GetString(cypherBytes)); 

How do I enable special characters in MVC routing?

으로 Web.config의 편집을 시도 암호화 및 인코딩 과정하지만 여전히 행운입니다

<system.web> 
<httpRuntime targetFramework="4.5" requestPathInvalidCharacters="" requestValidationMode="2.0"/> 
<compilation targetFramework="4.5" debug="true"/> 
<pages validateRequest="false"> 
    <namespaces> 
    <add namespace="System.Web.Helpers"/> 
    <add namespace="System.Web.Mvc"/> 
    <add namespace="System.Web.Mvc.Ajax"/> 
    <add namespace="System.Web.Mvc.Html"/> 
    <add namespace="System.Web.Optimization"/> 
    <add namespace="System.Web.Routing"/> 
    <add namespace="System.Web.WebPages"/> 
    </namespaces> 
</pages> 

** 업데이트 **

Callem Pittard에 의해 제안

나는 base64 인코딩을 수행하여이 문제를 해결하기 위해 관리 ... :)

An efficient way to Base64 encode a byte array?

+0

왜 당신이 URL 대신 몸을 사용하지 않는 데이터를 전송하기 위해? – NMK

+0

당신은 base64encode 할 수 있습니다/디코딩 당신에게 안전한 문자를 줄 것입니다 ... –

+0

Callem Pittard, 나는 당신의 제안을 시도하고 그것은 효과가! 감사! – user3663854

답변

0

HTTP.sys의 레지스트리에 정의 된대로 기본적으로 URL 문자의 최대 길이는 260입니다. 나는 당신의 URL을 인코딩하는 base64가이 한계 이하로 단축했다고 생각한다. 레지스트리에 새 값을 추가해야하는 경우이 제한을 무시할 수 있습니다.

자세한 내용은이 문서를 참조하십시오 : https://support.microsoft.com/en-us/kb/820129