您好,我正在将 WebGets 和 WebInvokes 添加到现有的 SOAP 服务中。这是一个将 GUID 类型变量作为参数的方法。我知道 WebGet 不能将字符串作为其 uritemplate 中的参数以外的任何内容。但是,如果我仍然按照http://baseaddress/Rest/GetInstitutionFromGuid?guid=106fbb94-34aa-403c-9400-f186e75e4793
Advanced Rest Client chrome 插件中的“”(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;
}