asp.net-mvc - 如何将 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;
}
解决方案
我最终使用 Post 而不是 Get 并且它有效。
关于显示更多代码的问题;细节总是无关紧要的。关键是,SomeFunc 方法返回一个 base64 字符串,句号!当我将该字符串作为 url 传递的参数传递时,网站控制器总是将传递的参数设为小写。任何了解 base64 的人都可以看到丢失确切区分大小写的字符串的问题。
推荐阅读
- assembly - RISC-V 汇编语法中的混合目标/源操作数顺序
- python - 在列表中使用运算符 =
- javascript - 我在 register_post_type 中有问题的 wordpress 功能
- react-native - 反应原生 | 循环渲染 FlatList 的项目
- html - Promise.all 没有在 React 中加载图像以在 HTML Canvas 中使用
- javascript - 如何防止桌面应用程序模仿浏览器请求?
- node.js - Express-graphql“在运行突变和查询时无法使用 mongodb 读取未定义的属性‘集合’”
- c++ - 返回模板类的模板化成员函数
- laravel - 在laravel,Javascript中对PDF进行数字签名
- jdbc - JDBC 接收器配置选项 batch.size