上記のパラメーター(緯度と経度)のURLに小数が含まれていない場合、ServiceStackはパラメーター(私の場合はRADIUS)を認識します。緯度または経度に小数を入れると、「リクエストのハンドラーが見つかりません」というメッセージが表示されます。以下は私のコードとエラーです
これがLocationクラスです
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.ApplicationPath:/
Request.CurrentExecutionFilePath:/api/Locate/geo/30.1783/-96.3911
Request.FilePath:/api/Locate/geo/30.1783/-96.3911
Request.HttpMethod:GET
Request.MapPath('〜'):C:\ Webservices \
Request.Path:/api/Locate/geo/30.1783/-96.3911/rad/20
Request.PathInfo:/ rad / 20
Request.ResolvedPathInfo:/ rad / 20
Request.PhysicalPath:C:\ Webservices \ api \ Locate \ geo \ 30.1783-96.3911
Request.PhysicalApplicationPath:C:\ Webservices \
Request.QueryString:format = 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:localhost
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:False
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パスのいずれかが間違っている場合、plsは私を修正します。