Comment appeler ASP .NET MVC WebAPI 2 méthode correctement
J'ai créé séparés projet pour ASP .NET MVC WebAPI 2 et je voudrais appeler Register
méthode. (J'utilise un projet est créé par VS2013 par défaut.)
[Authorize]
[RoutePrefix("api/Account")]
public class AccountController : ApiController
{
....
//POST api/Account/Register
[AllowAnonymous]
[Route("Register")]
public async Task<IHttpActionResult> Register(RegisterBindingModel model)
{
if (!ModelState.IsValid)
{
return BadRequest(ModelState);
}
IdentityUser user = new IdentityUser
{
UserName = model.UserName
};
IdentityResult result = await UserManager.CreateAsync(user, model.Password);
IHttpActionResult errorResult = GetErrorResult(result);
if (errorResult != null)
{
return errorResult;
}
return Ok();
}
- Je utiliser un simple application WPF pour ce faire. Je ne suis pas sûr de la syntaxe pour appeler cette méthode et passe nom d'utilisateur et le mot de passe à causeRegisterBindingModel
.
public partial class MainWindow : Window
{
HttpClient client;
public MainWindow()
{
InitializeComponent();
}
private void Button_Click(object sender, RoutedEventArgs e)
{
Test();
}
private async void Test()
{
try
{
var handler = new HttpClientHandler();
handler.UseDefaultCredentials = true;
handler.PreAuthenticate = true;
handler.ClientCertificateOptions = ClientCertificateOption.Automatic;
handler.Credentials = new NetworkCredential("test01","test01");
client = new HttpClient(handler);
client.BaseAddress = new Uri("http://localhost:22678/");
client.DefaultRequestHeaders.Accept.Add(
new MediaTypeWithQualityHeaderValue("application/json")); //It tells the server to send data in JSON format.
var response = await client.GetAsync("api/Register");
response.EnsureSuccessStatusCode(); //Throw on error code.
//How to pass RegisterBindingModel ???
var data = await response.Content.ReadAsAsync<?????>();
}
catch (Newtonsoft.Json.JsonException jEx)
{
MessageBox.Show(jEx.Message);
}
catch (HttpRequestException ex)
{
MessageBox.Show(ex.Message);
}
finally
{
}
}
La moindre idée?
OriginalL'auteur Developer | 2014-01-03
Vous devez vous connecter pour publier un commentaire.
C'est en fonction de routage de votre API Web service, mais me semble que vous avez oublié le nom du contrôleur en route.
Par défaut, il devrait être
Ou votre code
Et par la manière HTTP Verbe devrait être de POSTE et de ne pas OBTENIR et vous devriez mettre quelque chose dans le corps.
Vous pouvez passer à travers le corps à l'aide PostAsync argument d'une méthode appelée le Contenu. Dans votre cas, le meilleur choix sera utiliser ObjectContent
De l'échantillon sur la façon d'utiliser des objets que vous pouvez trouver ici L'appel d'une API Web à Partir d'un .NET Client, citation de cet article:
Regarder mise à jour de réponse
OriginalL'auteur Regfor
Fondamentalement, vous avez besoin de sérialiser le modèle dans le post du corps d'une manière que le framework mvc peut désérialiser et de la forme du modèle de nouveau. Ces postes devraient vous aider avec le format des données sérialisées:
http://www.asp.net/web-api/overview/formats-and-model-binding
http://www.asp.net/web-api/overview/formats-and-model-binding/parameter-binding-in-aspnet-web-api
OriginalL'auteur JTMon