如果前面的参数(纬度和经度)在 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 路径错误,请纠正我。