【问题标题】:C# get uri arguments [duplicate]C#获取uri参数[重复]
【发布时间】:2017-05-23 16:50:03
【问题描述】:

http://localhost/ReportServer/Reserved.ReportServer?/Report+Project1&rs:Command=ListChildren

我想获取带有报告文件夹 (Report Project1) 的部分 url。 我试过HttpContext.Current.Request.Url.Segments,但这个返回数组包含以下项目:“\”、“ReportServer”、“Reserved.ReportServer”

如何使用 Report Project1 获得零件?

【问题讨论】:

  • 这是查询字符串参数...试试这个HttpContext.Current.Request.QueryString
  • 谢谢,但是在 QueryString 中是数组 AllKeys,其中包含 2 项:null 和 rs:Command,报告项目 1 不在此数组中
  • 您需要正确构建您的 url,这将是:...ReportServer?/&Report=Project1&rs=ListChildren 或 rs 应该是什么。而不是通过 ctx.Request.Params.Get("rs") 或 ("Report") 或通过 QueryString 访问它
  • 或者尝试删除?之后的/。这可能是问题所在。

标签: c# url


【解决方案1】:

这是正确的解决方案:

HttpContext.Current.Request.QueryString.Get(0)

【讨论】:

  • 但请注意该参数必须始终放在首位
  • 是的,这个 url 在 Reporting Server 中,不会改变
  • 那么合适:)
【解决方案2】:

由于此请求中的查询不是标准的,即第一个参数没有变量名,只有文件夹路径,因此您无法以可靠的方式获取 URI 查询参数。以下代码将提供您想要的功能,但也许使用简单的 String.split() 查找文件夹的正则表达式会更可靠。

Uri temp = new Uri("http://localhost/ReportServer/Reserved.ReportServer?/Report+Project1&rs:Command=ListChildren");
string query = temp.Query;
var folder = HttpUtility.ParseQueryString(query).Get(null);

在 Get 方法中有 null 值的地方,您应该真正提供变量名称,在您的示例中输入 rs:Command 将返回该参数的值。

【讨论】:

    猜你喜欢
    • 2011-02-22
    • 2013-05-10
    • 2016-01-22
    • 1970-01-01
    • 2018-05-08
    • 2014-07-18
    • 1970-01-01
    • 2013-04-09
    • 2014-03-15
    相关资源
    最近更新 更多