1

上記のパラメーター(緯度と経度)の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は私を修正します。

4

1 に答える 1

1

この以前の回答から

ServiceStack のルートには、 と の 2 つのコンポーネント セパレータがあり. ます。ServiceStack がサポートするさまざまなルート パス/を示す例を次に示します。

URL エンコードを試すことができます.。それ%2E以外の場合は、アクションをクエリ文字列パラメーターとして追加するだけです。/path/to/me%40example.com?action=action

于 2012-11-14T22:25:56.243 に答える