L'appel d'une autre API Web contrôleur directement à partir de l'intérieur d'une autre API Web du contrôleur

Donné un contrôleur de Proxy et une action de GetInformation. Je veux être en mesure d'appeler la méthode GetInformation de la Users contrôleur. À la fois la WebAPI les contrôleurs sont dans le même projet, mais des appels directs comme

var controller = new UsersController();
return controller.GetInformation(request);

Ne fonctionne pas.

La signature est:

public HttpResponseMessage GetInformation(InformationRequest request)

Je ne veux pas faire une réponse de redirection comme je ne veux pas le UserController route exposés à l'extérieur. Cela doit être un interne uniquement appel.

  • Pourquoi l'appel direct ne fonctionne pas? Êtes-vous une erreur? Si il se sent comme il serait mieux si vous aviez une couche intérieure que vous pourriez appeler au lieu d'appeler un autre contrôleur..
  • Au lieu d'appeler le contrôleur, vous pouvez utiliser RedirectToRoute (ou) déplacer la fonctionnalité de GetInformation à un service et d'appeler ce service.
  • RedirectToRoute retourne un ActionResponse et expose la redirection vers le client. Ce n'est pas ok (et aussi dans la question de l'énoncé).
  • Il lève une exception de type référence nulle dans la construction de la HttpResponseMessage peu importe ce que les HttpResponseMessage est. J'ai posté le contourner dans ma réponse ci-dessous, il manquait certains éléments dans la construction de la méthode de contrôleur. Apparemment elles sont injectés par WebAPI (MVC) moteur, sans eux HttpResponses ne peut pas être généré.
InformationsquelleAutor VulgarBinary | 2016-10-19