Skip to main content
 首页 » 编程设计

c#之WCF Web JSON 请求双斜线

2024年01月01日46TianFang

我有 WCF 服务,其方法发送路径如下:“C:\asdf\log.log”。

客户端获取“C:\\asdf\\log.log”

问题出在哪里,如何解决?

发送代码

MemoryStream stream1 = new MemoryStream(); 
DataContractJsonSerializer ser = 
    new DataContractJsonSerializer(typeof(ConfSettings)); 
ser.WriteObject(stream1, this); 
stream1.Position = 0; 
StreamReader sr = new StreamReader(stream1); 
string tmp = sr.ReadToEnd(); 
return (tmp); 

获取代码

Stream dataStream = response.GetResponseStream(); 
StreamReader reader = new StreamReader(dataStream); 
string responseFromServer = reader.ReadToEnd(); 
string result = responseFromServer; 
string tmp = result 
byte[] bytes = new byte[tmp.Length * sizeof(char)]; 
System.Buffer.BlockCopy(tmp.ToCharArray(), 0, bytes, 0, bytes.Length); 
MemoryStream memStream = new MemoryStream(bytes, 2, bytes.Length-4); 
DataContractJsonSerializer ser = 
    new DataContractJsonSerializer(typeof(ConfSettings)); 
conf = (ConfSettings)ser.ReadObject(memStream); 

请您参考如下方法:

接收到的实际值是否带有双斜杠,或者它只是以双斜杠出现在调试器中?调试器将显示某些字符的转义序列,包括\\for\,但字符串的实际内容是正确的。

如果问题存在于调试器之外,我将需要查看更多代码以排除错误输入是问题的根源。特别是在您的发送代码中,这个和 ConfSettings 的结构是什么?被损坏的属性是否设置正确,或者您是否使用了常规字符串文字而不是逐字字符串文字:

string rightVal = "C:\\asdf\\log.log"; 
string wrongVal = @"C:\\asdf\\log.log"; 
//string rightVal = @"C:\asdf\log.log";