Asp.Net Web-Api - Rückgabe 404 für IEnumerable<T> Bekommen, Wenn null

Ich bin erstellen einer API mit der release-version von Asp.Net Web-Api. Ich bin versucht, wieder übergeben Sie die richtige Antwort-code (404), wenn keine Ergebnisse gefunden werden.

Erste Version (wirft mehrere enumeration error):

public IEnumerable<MyObjectType> Get(int id, string format)
{
    var db = new DbEntities();

    var result = db.pr_ApiSelectMyObjectType(store, id, format).AsEnumerable();
    if (result.Any())
    {
        return result;
    }
    var response = new HttpResponseMessage(HttpStatusCode.NotFound) 
        { Content = new StringContent("Unable to find any results") };
    throw new HttpResponseException(response);
}

Zweite Version (das Ergebnis ist nie null, also es gibt immer 200):

public IEnumerable<MyObject> Get(int id, string format)
{
    var db = new DbEntities();

    var result = db.pr_ApiSelectMyObjectType(store, id, format);
    if (result == null)
    {
        var response = new HttpResponseMessage(HttpStatusCode.NoContent) 
            { Content = new StringContent("Unable to find any results") };
        throw new HttpResponseException(response);
    }
    return result.AsEnumerable();
}

Wie gebe ich wieder eine 404, wenn keine Ergebnisse gefunden werden? Ich weiß, ich könnte eine Liste verwenden, aber ich habe eine benutzerdefinierte csv-Medien-Typ formatter, dass funktioniert nur mit IEnumerable-Arten, so würde ich lieber mit dem stick.

InformationsquelleAutor Luke Jenkins | 2012-10-02
Schreibe einen Kommentar