En option paramètres de chaîne de requête dans ASP.NET Web API

J'ai besoin pour mettre en œuvre les suivantes WebAPI méthode:

/api/books?author=XXX&title=XXX&isbn=XXX&somethingelse=XXX&date=XXX

Tous les paramètres de chaîne de requête peut être null. Qui est, l'appelant peut spécifier de 0 à tous les 5 paramètres.

Dans MVC4 bêta j'ai utilisé pour effectuer les opérations suivantes:

public class BooksController : ApiController
{
    //GET /api/books?author=tolk&title=lord&isbn=91&somethingelse=ABC&date=1970-01-01
    public string GetFindBooks(string author, string title, string isbn, string somethingelse, DateTime? date) 
    {
        //...
    }
}

MVC4 RC ne se comportent pas comme ça. Si je spécifiez moins de 5 paramètres, il répond avec un 404 disant:

Aucune action n'a été trouvé sur le contrôleur "Livres" qui correspond à la demande.

Quelle est la bonne méthode de signature pour qu'elle se comporte comme elle était, sans avoir à spécifier le paramètre facultatif dans le routage d'URL?

  • mettre [httpget] sur l'action.
  • Si j'ai mis tous les paramètres de la méthode est appelée; en outre, il commence avec Get il est automatiquement lié avec le HTTP GET méthode...
  • C'est la manière dont le web api travaux de routage, asp.net/web-api/overview/web-api-routing-and-actions/...
  • Oui. Je sais comment il fonctionne. Je ne peux pas le faire fonctionner en vertu de CETTE circonstance particulière.
  • Comment cette même compiler? string? n'est pas un type valide. Vous ne pouvez pas déclarer string comme type nullable, car il est un type de référence.
  • vous avez raison, c'était probablement un rapide résumé de code que j'ai écrit juste dans le but de comprendre pourquoi je n'étais pas en mesure de défaut de null. Je me rappelle que le vrai problème était avec DateTime qui ne pouvaient pas être en défaut jusqu'à ce que la version bêta. Aussi, cette question est à partir de 1 an et demi.

InformationsquelleAutor frapontillo | 2012-08-08