Думаю, вы смешиваете здесь две концепции. Ваш контроллер API должен иметь конечные точки, которые будут вызываться от какого-либо клиента, и вы должны возвращать некоторые данные обратно в формате, который клиент может читать, XML или JSON. Вы не должны делать перенаправление на другой контроллер MVC.
Что вы должны делать, это вернуть некоторые данные, которые имеют путь к контроллеру действий MVC, который клиент может использовать.
public HttpResponseMessage Register()
{
//DO something as you want
var newUrl = this.Url.Link("Default", new { Controller = "Account",
Action = "Register" });
return Request.CreateResponse(HttpStatusCode.OK,
new {Success = true, RedirectUrl = newUrl});
}
Это вернет вам ответ, как это вызывающий с кодом состояния 200 OK ответа
{
"Success" : true,
"RedirectUrl" : "yoursite.com/Account/Register"
}
Клиент должен прочитать это и сделать необходимые вещи. Например, если вы вызываете этот API из своего js-кода, вы можете просто использовать window.location.href для перенаправления пользователя на новую страницу.
Например,
$.post("PathToYourApiEndpoint,function(res){
if(res.Success)
{
window.location.href=res.RedirectUrl;
}
});
Опять же, я не знаю, почему вы первый вызов API и перенаправляет пользователя к действию контроллера MVC. Независимо от того, какую логику вы используете в методе действий веб-api, вы можете сделать это в своем MVC-контроллере и, таким образом, избегать вызова API.
http://stackoverflow.com/questions/11324711/redirect-from-asp-net-web-api-post-action –