0

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

1 回答 1

0

不确定这是否正确,但通常第一个查询字符串值以“?”为前缀 不是 &。

于 2013-01-29T16:04:54.643 回答