首页 > 解决方案 > 反斜杠在 WebGet 中未被识别为参数

问题描述

代码:

[OperationContract]
[WebGet(UriTemplate = "ProgrammerData/Document/{*documentName}")]
string ProgrammerDataDocument(string documentName);

称呼:

称呼 图片文字:localhost/RedactedPath/ProgrammerData/Document/%5C%5Cxundas

结果

在此处输入图像描述 图片文字:

public string ProgrammerDataDocument(string documentName)
{
  // value of documentName at this point is "xundas"
  string a = "";
  return a;
}

我编码但没有出现在我的参数中的反斜杠。

我需要这个,因为我将网络路径从客户端发送到服务器

标签: c#.netwcf

解决方案


起初,当我们将反斜杠传递给服务器时,浏览器不支持反斜杠。任何反斜杠都将转换为正斜杠。因此这是不可能实现的。
此外,参数前面的正斜杠和反斜杠均不被识别(尚未加密),但参数中间的斜杠被识别并自动转换为反斜杠。最后,当返回结果时,Url 支持正斜杠。请考虑以下代码。

[OperationContract]
        [WebGet(UriTemplate ="abc/{*value}")]
        string GetData(string value);


    public string GetData(string value)
            {
                var result = System.Net.WebUtility.UrlDecode(value);
                result = result.Replace("/", @"\\");
                return result;
            }

结果。 关于 UriTemplate。https://docs.microsoft.com/en-us/dotnet/framework/wcf/feature-details/uritemplate-and-uritemplatetable?redirectedfrom=MSDN 如果有什么我可以帮忙的,请随时告诉我。
在此处输入图像描述



推荐阅读