2

ServiceStack API を開発していますが、次へのルーティングに問題があります。

    [BsonId]
    public ObjectId Id { get; set; }

次のようにカスタムバインディングモデルを設定しようとしました:

  public class ObjectIdModelBinder : DefaultModelBinder
    {
        public override object BindModel(ControllerContext controllerContext, ModelBindingContext bindingContext)
        {
            var result = bindingContext.ValueProvider.GetValue(bindingContext.ModelName);
            return result == null ? ObjectId.Empty : ObjectId.Parse((string)result.ConvertTo(typeof(string)));
        }
    }


protected void Application_Start()
    {

        ModelBinders.Binders.Add(typeof(ObjectId), new ObjectIdModelBinder());

これは AppHost.cs にあります

ルート .Add("/user") .Add("/user/{Id}");

URLからAPIにアクセスしようとしたとき:

http://localhost:1000/api/user/1234567

次のエラーが表示されます。

エラー コード RequestBindingException メッセージ ServiceStack.WebHost.Endpoints.RestHandler.GetRequest(IHttpRequest httpReq, IRestPath restPath) で要求スタック トレースをバインドできません ServiceStack.WebHost.Endpoints.RestHandler.ProcessRequest(IHttpRequest httpReq, IHttpResponse httpRes, String operationName)

基本的なネイティブ型へのバインドは機能しますが、このようなものを修正する方法はありますか?

4

1 に答える 1

1

1234567 の代わりに「51cbda57d845130cc86322fd」などの有効な ID を渡すと、[Bson] Id プロパティに正しくマップされました。

于 2013-06-28T03:24:37.587 に答える