您好我正在将WebGets和WebInvokes添加到现有的SOAP服务中。这是一个将GUID类型变量作为参数的方法。我知道WebGet不能将除字符串之外的任何内容作为其uritemplate中的参数。但是,如果我仍然在Advanced Rest Client chrome addon中的“http://baseaddress/Rest/GetInstitutionFromGuid?guid=106fbb94-34aa-403c-9400-f186e75e4793
”(106fbb94-34aa-403c-9400-f186e75e4793是示例Guid)中执行此操作,则它不会给出错误,但会返回null。因此我的问题是我可以将GUID类型的参数传递给WebGet的UriTemplate,如果我不能用什么样的http请求从guid获取机构?
以下是GetInstitutionFromGuid方法的操作合同:
[OperationContract]
[WebGet(UriTemplate = "Rest/GetInstitutionFromGuid&guid={guid}&format={format}",
RequestFormat = WebMessageFormat.Json,
ResponseFormat = WebMessageFormat.Json,
BodyStyle = WebMessageBodyStyle.Wrapped)]
[return: MessageParameter(Name = "Institution")]
Institution GetInstitutionFromGuid(Guid guid,String format);
以下是其实施:
public Institution GetInstitutionFromGuid(Guid guid,String format)
{
if (string.Equals("json", format, StringComparison.OrdinalIgnoreCase))
{
WebOperationContext.Current.OutgoingResponse.Format = WebMessageFormat.Json;
}
Institution inst = db.Institutions.Where(i => i.Guid == guid).FirstOrDefault();
return inst;
}
答案 0 :(得分:0)
不确定这是否正确,但通常第一个查询字符串值以“?”为前缀不是&amp ;.