Web-Api-GET-Methode, die hat eine null-Guid möglich?

Habe ich ein MVC-Web-API-get-Methode, die ich möchte in der Lage sein, um übergeben Sie eine null-Guid als parameter. Wenn ich ein setup das mit einer "?Id=null" bekomme ich einen 400-Antwort. Ich kann pass eine leere guid, aber das würde ich eher nicht tun.

Egal was ich ändern Sie die URI, "id= id=null etc" es kann nicht sein, dass null. Weiß jemand, wie diese Arbeit zu machen?

  [HttpGet]
  public User Get(Guid? Id)

Update Route config

  config.Routes.MapHttpRoute(
                name: "DefaultApi",
                routeTemplate: "api/{controller}/{action}/{id}",
                defaults: new { id = RouteParameter.Optional }
            );

Vollständige Http-Get-Signatur sourceId ist der param, dass id like to pass als null.

 [HttpGet]
  public IEnumerable<ActionItemsListViewModel> GetPagedList(int skip, int take, int page, int pageSize, [FromUri]List<GridSortInfo> sort, [FromUri] ActionItem.ActionItemStatusTypes? actionItemStatus, Guid? sourceId)

Habe das problem gefunden, dieser filter war nämlich der ModelState war ungültig.

public class ApiValidationActionFilter : ActionFilterAttribute
{
    public override void OnActionExecuting(System.Web.Http.Controllers.HttpActionContext actionContext)
    {
        if (!actionContext.ModelState.IsValid )
        {
            var errors = actionContext.ModelState
                .Where(e => e.Value.Errors.Count > 0)
                .Select(e => e.Value.Errors.First().ErrorMessage).ToList();

            actionContext.Response = actionContext.Request.CreateResponse(HttpStatusCode.BadRequest, string.Join(" ", errors));
        }
    }
}
  • Haben Sie versucht, sich nicht zu übergeben nichts?
  • Ja, und das funktioniert, leider ist die Steuerung ich bin mit mit der api erlaubt mir nicht, ausschließen die parameter.
Schreibe einen Kommentar