开发者

how to pass a decimal number to a rest web service

I am wanting to pass a decimal number (1.23) to my WCF-REST web service.

I keep getting a 'resource cannot be found' error. I expect that I'm encountering some security feature of IIS where urls that contain a dot are a resource. Does anyone have a suggestion on how to pass a decimal number to my webservice?

Sample url... http://localhost/restdataservice.svc/echo/2.2

Operation Contract

[OperationContract]
[WebGet(UriTemplate = "echo/{number}")开发者_高级运维]
string Echo(string number);

And implementation

public string Foo(string number)
{
  return number;
}


You should look at IIS log to see the problem. One thing that can cause such problem is UrlScan. It has UrlScan.ini config file, where you can find AllowDotInPath parameter. If it is set to 0, requests such as above would be rejected. Just change it to 1 (but don't forget to ensure, that you don't allow directory traversals by rejecting urls with ..).


You may want to consider sending that number to your resource in a request representation using a POST request.


This should work fine out of the box, I cannot reproduce this problem with a similar basic setup - are you sure the default route for your echo method is set correctly?


I had a similar problem calling a method on a WCF OData Server.

The problem was that a decimal parameter requires an 'm' at the end.

http://localhost/restdataservice.svc/echo/2.2m
0

上一篇:

下一篇:

精彩评论

暂无评论...
验证码 换一张
取 消

最新问答

问答排行榜