2017-07-08 105 views
0

我打电话给我服务,你可以看到这样的:URI格式不WebClient的C#支持

public ReceptionView ReceptionViewByReceptionId(string receptionId) 
    { 
     ClientRequest.Headers["Content-type"] = "application/json"; 
     ClientRequest.Encoding = System.Text.Encoding.UTF8; 
     string result = ClientRequest.DownloadString("http://localhost:1111" + " /ReceptionService.svc/ReceptionViewByReceptionId/" + receptionId); 

     var javascriptserializer = new JavaScriptSerializer(); 
     return javascriptserializer.Deserialize<ReceptionView>(result); 
    } 

但我DownloadString得到这个错误:

{"URI formats are not supported."} 

我的服务工程确定,当我打电话给我这样的浏览器服务:

http://localhost:1111/ReceptionService.svc/ReceptionViewByReceptionId/1 

我得到预期的结果。但在我的应用程序中,我可以“T

我的服务接口

[WebGet(UriTemplate = "/ReceptionViewByReceptionId/{receptionId}", RequestFormat = WebMessageFormat.Json, 
    ResponseFormat = WebMessageFormat.Json)] 

    ReceptionView ReceptionViewByReceptionId(string receptionId); 

作为一个说明我的函数之前的工作没有任何错误,但今天突然返回此错误。

我拉琴导致浏览器: enter image description here

+0

使用像wireshark或fiddler这样的嗅探器来学习一些东西。在浏览器中使用嗅探器并连接到您的服务并查看消息的格式。它不仅仅是URL和字符串。还有其他标题信息必须包含在内。 – jdweng

+0

@jdweng我在提琴手中追踪它,但服务网址从未调用过为什么? –

+0

结果是200完成,因此连接成功完成。这可能是因为您的应用程序未完成安装了错误的Cookie而过期或运行。通常,当我调试这些问题时,我建议在更改代码以从IE浏览器中删除cookie之后,以前的不良结果不会导致混淆。 – jdweng

回答

0

的问题是空间在这里" /Reception,你可以在URL

string result = ClientRequest.DownloadString("http://localhost:1111" + " /ReceptionService.svc/ReceptionViewByReceptionId/" + receptionId); 

我删除和每一件事工作得很好看。