У меня есть маршрутизация согласно нижеBad Request - Недопустимый URL HTTP Error 400. Запрос URL недействителен
routes.MapRoute(
name: "Default",
url: "{controller}/{action}/{id}",
defaults: new { controller = "Home", action = "Index", id = UrlParameter.Optional }
);
Теперь для части ид, я комбинируя множество наборов данных, разделённых «-» символа и шифровать его с помощью 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));
Пробовал редактировать web.config, как How do I enable special characters in MVC routing?
, но до сих пор не повезло
<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>
** Обновление **
мне удалось решить эту проблему, делая кодирование base64 как предложено Callem Питтард ... :)
An efficient way to Base64 encode a byte array?
Почему бы вам не использовать тело вместо URL для передачи данных? – NMK
Вы можете base64encode/декодировать его, чтобы дать вам безопасные символы в URL-адресе ... –
Callem Pittard, я попробовал ваше предложение, и это сработало! Благодаря! – user3663854