首页 > 解决方案 > 如何将 Base64 字符串传递给 MVC 控制器

问题描述

我有一项服务,我试图将加密值传递给我的 MVC 站点,特别是 Home 控制器。该值作为 Base64 发送,我可以在从服务中创建 URI 时验证 Base64 字符串是否正确。但是当请求到达我的站点并由我的控制器处理时,整个值被强制为小写,由于 Base64 区分大小写,因此解密失败。我尝试对字符串进行百分比编码,希望保留大小写,但这只会带回 404。

我的路线如下所示:

routes.MapRoute("ResultsReady", "Results-Ready/{sn}", new { controller = "Home", action = "ResultsReady", sn = UrlParameter.Optional });

我的控制器是这样的:

public ActionResult ResultsReady(string sn)
{
    return Content(sn);
}

我的服务代码像这样构建 URI:

using (var client = new HttpClient()) 
{
    string base64EncodedValue = SomeFunc();
    var response = client.GetAsync($"https://somewhere.com/Results-Ready/{base64EncodedValue}").Result;
}

标签: asp.net-mvc

解决方案


我最终使用 Post 而不是 Get 并且它有效。

关于显示更多代码的问题;细节总是无关紧要的。关键是,SomeFunc 方法返回一个 base64 字符串,句号!当我将该字符串作为 url 传递的参数传递时,网站控制器总是将传递的参数设为小写。任何了解 base64 的人都可以看到丢失确切区分大小写的字符串的问题。


推荐阅读