Ok, alors voici mon problème: Je crée une application de magasin Windows 8 en javascript, qui récupère ses données à partir d'une API écrite en C# avec asp. Le magasin utilise plusieurs méthodes nécessitant deux champs (exemple: envoi d'un identifiant d'employé et d'un identifiant d'enregistrement pour vérifier si l'enregistrement appartient à l'employé et retourner plus de détails). Cependant, pour une raison quelconque, j'ai une méthode qui refuse tout simplement de travailler. Voici la méthode dans le contrôleur:Méthode de service Web qui reçoit deux valeurs/champs
[HttpGet]
[ActionName("teste")]
public IEnumerable<EmployeeProjectViewModel> teste(int iUserMasterId, int iEmployeeOrganizationsId)
{
var Query = from eprojects in db.EmployeeProjects
where eprojects.UserMasterId == iUserMasterId
&& eprojects.Deleted == false
&& eprojects.EmployeeOrganizationsId == iEmployeeOrganizationsId
select new EmployeeProjectViewModel
{
EmployeeProjectsId = eprojects.EmployeeProjectsId,
UserMasterId = eprojects.UserMasterId,
Name = eprojects.ProjectName,
Month = eprojects.ProjectMonth,
Year = eprojects.ProjectYear,
URL = eprojects.ProjectURL,
Description = eprojects.ProjectDescription,
};
return Query;
}
Et le code routeConfig:
routes.MapHttpRoute(
name: "teste",
routeTemplate: "api/{controller}/teste/{iUserMasterId}/{iEmployeeOrganizationsId}",
defaults: new
{
action = "teste"
});
L'erreur qu'il me donne est de 404: Méthode non trouvé dans le contrôleur (vérifié avec Fiddler). Le contrôleur est correct cependant parce qu'il y a plus de méthodes dans le contrôleur. J'ai également remarqué que d'autres méthodes dans le même contrôleur qui utilisent également plus d'un champ échouent aussi. Qu'est-ce que je fais de mal? J'ai comparé ces deux codes avec d'autres contrôleurs que j'ai qui fonctionnent également avec plusieurs champs et ils semblent tous fonctionner correctement.
EDIT: voici l'exemple de la demande:
{"$id":"1","Message":"No HTTP resource was found that matches the request URI 'http://localhost:55105/api/EmployeeProjects/teste/8/2'.","MessageDetail":"No action was found on the controller 'EmployeeProjects' that matches the request."}
ressemble à votre routage est un peu étrange. Vous devez inclure le code WHOLE du code routeConfig, car l'ordre est important. Cependant, je suppose que le problème est que la route que vous avez ajoutée n'est pas appelée du tout (puisque votre route par défaut est avant la route "teste" et votre modèle de requête correspond à cela). – Aron
Ma valeur par défaut est après l'itinéraire "teste" *. J'ai essayé de changer les commandes et ça n'a pas marché de toute façon. Je ne vais pas ajouter tout le code routeconfig, c'est vraiment gros, et vous n'avez vraiment pas besoin de tout ça. S'il y a quelque chose dont vous avez besoin en particulier, il suffit de demander. –
Aussi, même en cas d'échec, il entre dans le contrôleur, il ne trouve tout simplement pas la méthode. –