2

我開發一個ServiceStack API和我無法路由到路由的MongoDB的ObjectId通過ServiceStack

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 operationN ame)

綁定到一個基本的本地類型的作品,任何想法如何解決這樣的事情?

回答

1

傳遞一個有效的ID如'51cbda57d845130cc86322fd'而不是1234567正確地將其映射到[Bson] Id屬性。