在WebGet UriTemplate中将GUID作为参数传递

时间:2013-01-29 15:50:40

标签: json wcf http rest service

您好我正在将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;
            }

1 个答案:

答案 0 :(得分:0)

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