1

如果前面的参数(纬度和经度)在 URL 中没有小数点,ServiceStack 会识别参数(在我的例子中是 RADIUS)。一旦我将小数点放在纬度或经度上,我就会得到一个“未找到请求的处理程序”。以下是我的代码和错误

这是位置类

public class Location
{
    [DataMember(Name = "Latitude", Order = 5)]
    public double? LATITUDE { get; set; }
    [DataMember(Name = "Longitude", Order = 6)]
    public double? LONGITUDE { get; set; }
    [DataMember(Name = "Radius", Order = 7)]
    public double? RADIUS { get; set; }
}

这是我的 AppHost 路径定义

Routes.Add<Location>("/Locate/geo/{LATITUDE}/{LONGITUDE}", "GET");
Routes.Add<Location>("/Locate/geo/{LATITUDE}/{LONGITUDE}/rad/{RADIUS}", "GET");
Routes.Add<Location>("/Locate/rad/{RADIUS}/geo/{LATITUDE}/{LONGITUDE}", "GET");

下面是我的结果

作品

http://localhost:2222/api/Locate/geo/30.1783/-96.3911?format=xml
http://localhost:2222/api/Locate/rad/20/geo/30.1783/-96.3911?format=xml

不工作

http://localhost:2222/api/Locate/geo/30.1783/-96.3911/rad/20?format=xml 

- 我收到以下错误

未找到请求的处理程序:

请求.应用程序路径:/

Request.CurrentExecutionFilePath:/api/Locate/geo/30.1783/-96.3911

请求文件路径:/api/Locate/geo/30.1783/-96.3911

请求.HttpMethod: GET

Request.MapPath('~'): C:\Webservices\

请求路径:/api/Locate/geo/30.1783/-96.3911/rad/20

请求路径信息:/rad/20

Request.ResolvedPathInfo: /rad/20

Request.PhysicalPath:C:\Webservices\api\Locate\geo\30.1783-96.3911

Request.PhysicalApplicationPath: C:\Webservices\

Request.QueryString:格式=xml

Request.RawUrl:/api/Locate/geo/30.1783/-96.3911/rad/20?format=xml

Request.Url.AbsoluteUri:http://localhost:2222/api/Locate/geo/30.1783/-96.3911 /rad/20?format=xml

Request.Url.AbsolutePath:/api/Locate/geo/30.1783/-96.3911/rad/20

Request.Url.Fragment:

Request.Url.Host:本地主机

Request.Url.LocalPath:/api/Locate/geo/30.1783/-96.3911/rad/20

Request.Url.Port: 2222

Request.Url.Query: ?format=xml

Request.Url.Scheme:http

Request.Url.Segments:System.String[]

App.IsIntegratedPipeline:假

App.WebHostPhysicalPath: C:\Webservices

App.DefaultHandler: DefaultHttpHandler

App.DebugLastHandlerArgs: GET|/api/Locate/geo/30.1783/-96.3911|C:\Webservices\api\Locate\geo\30.1783-96.3911

如果小数是问题,想知道带有 Lat 和 Long 的第一个 URL 如何使用小数。如果任何 AppHost 路径错误,请纠正我。

4

1 回答 1

1

从这个先前的答案

ServiceStack 的 Routes 中有 2 个组件分隔符:./,这是一个示例,显示了ServiceStack 支持的不同 Route 路径

您可以尝试对 url 进行编码,.否则%2E只需将操作添加为查询字符串参数,例如:/path/to/me%40example.com?action=action

于 2012-11-14T22:25:56.243 回答