【发布时间】:2018-07-11 15:01:27
【问题描述】:
.NET Core 中无密钥查询字符串参数的替代方法是什么?
在 asp.net 中,语法为 Request.QueryString[ null ],但 .NET Core 会为此引发 null 异常,不允许您传入 null 作为键名。
比如我需要支持这种格式的url:
http://localhost:54301/RBLeCORS.ashx?{Command:CalcEngineStatus}
但是,除此之外,我还需要能够处理通过 $.ajax() 调用发布的命令,该命令来自发布数据而不是放在查询字符串上的 javascript 调用。
无钥匙(我看到 cmets 想称它为无价值,我猜这适用于 .NET Core,但我看到它们被称为无钥匙 for asp.net b/c 您使用null 密钥访问)值是一个 json 对象,它可以包含的不仅仅是我给出的这个简单示例。
更新:这是我当前的代码作为解决方法。
string queryData = null;
if (context.Request.Query.Count == 1 )
{
var firstKey = context.Request.Query.Keys.ElementAt(0);
var firstValue = context.Request.Query[firstKey];
if ( string.IsNullOrEmpty( firstValue ) )
{
queryData = firstKey;
}
}
【问题讨论】:
-
无钥匙是什么意思?
-
你能展示一个你试图解析的 uri 的例子吗?
-
如果您只是期待 JSON 命令或其他可解析的命令,为什么不将其转换为字符串以便解析 (
var command = Request.HasValue ? Request.QueryString.Value.Substring(1) : "{}";) -
@JasonW 我需要支持在 QueryString 上传递的信息以及在表单中发布的数据。将测试您的 Request.HasValue 方法,但它看起来比我在上面发布的解决方法更干净。
标签: c# .net-core query-string