我几乎确切的签名服务。我可以传递具有“。”的值。在名字里。与URL http://localhost/MyService.svc/category/test.category
我得到传递进来的字符串值取值为“test.category”
[OperationContract]
[WebGet(UriTemplate = "category/{id}")]
string category(string id);
:例如,这会在我的工作。
所以一定有其他问题。你如何访问网址?只是直接在浏览器中?或通过JavaScript调用?只是想知道这是否是客户端的一些错误。服务器传递的值很好。我会建议尝试访问您的浏览器中的网址,如果它不起作用,那么请准确地发布您正在使用的URL以及错误消息的内容。
此外,你使用WCF 3.5 SP1或只是WCF 3.5?在我阅读的RESTFul .Net书中,我看到UriTemplate有一些变化。
最后,我从RESTFul .Net书中修改了一个简单的Service,并且能够正确回应。
class Program
{
static void Main(string[] args)
{
var binding = new WebHttpBinding();
var sh = new WebServiceHost(typeof(TestService));
sh.AddServiceEndpoint(typeof(TestService),
binding,
"http://localhost:8889/TestHttp");
sh.Open();
Console.WriteLine("Simple HTTP Service Listening");
Console.WriteLine("Press enter to stop service");
Console.ReadLine();
}
}
[ServiceContract]
public class TestService
{
[OperationContract]
[WebGet(UriTemplate = "category/{id}")]
public string category(string id)
{
return "got '" + id + "'";
}
}
+1为查询字符串建议。期限在请求的任何地方都可以正常工作,除了最后。 – 2010-07-04 21:28:32
将参数粘贴到查询字符串时,UriTemplate(和URL)的外观如何? – dumbledad 2013-04-29 08:06:05