c# - 错误请求 - 无效 URL - HTTP 错误 400。请求 URL 无效

标签 c# model-view-controller routes

我有一个如下所示的路由

routes.MapRoute(
            name: "Default",
            url: "{controller}/{action}/{id}",
            defaults: new { controller = "Home", action = "Index", id = UrlParameter.Optional }
        );
现在对于 ID 部分,我组合了许多由“-”字符分隔的数据集,并使用 AES (RijndaelManaged) 加密对其进行加密。和 I 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>
** 更新 **
我设法通过按照 Callem Pittard 的建议进行 base64 编码来解决这个问题... :)
An efficient way to Base64 encode a byte array?

最佳答案

默认情况下,URL 字符最大长度为 260,如 HTTP.SYS 注册表所定义。我认为 base64 编码您的 URL 只是将其缩短到低于此限制。如果需要,您可以通过向注册表添加新值来覆盖此限制。

有关更多信息,请参阅这篇文章:
https://support.microsoft.com/en-us/kb/820129

关于c# - 错误请求 - 无效 URL - HTTP 错误 400。请求 URL 无效,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26398972/

相关文章:

c# - 使用自定义 WPF 控件时无法设置某些属性

java - 如何使用 Spring MVC 从表单中的组合中获取属性值

model-view-controller - UI5 中的事件注册 - 将多个监听器附加到一个事件

node.js - nginx通过docker主机映射路由,对于每个路由,调用不同的容器

ruby-on-rails - 在设计中创建替代注册操作

ruby-on-rails - 尽管在 rake 路由中可用,但出现奇怪的路由错误

c# - 使用 Windows 7 流媒体

c# - 适合初学者的 WPF 或 Winforms?

c# - 我的 C# 应用程序如何测试用户是否具有 "Read"网络共享访问权限?

angularjs - Http 获取 : Possibly unhandled rejection