Массовое назначение с использованием RestSharp, POST-запрос - MVC3
Я проводил много исследований, пытаясь найти лучший способ передать запрос POST массового назначения с моим приложением ASP.NET MVC3 без особого успеха.
Вот сценарий:
Как я уже упоминал, у меня есть ASP.NET MVC3 со стандартными методами REST, с помощью которого я пытаюсь установить связь с настольным приложением (другое приложение, написанное собственными силами). Для начала в качестве прототипа мы просто использовали загрузку XML-документов методом грубой силы через WebClient, а затем приложение MVC3 анализировало XML-документ. Чтобы поддерживать такое поведение, мы должны постоянно создавать несколько методов, один для разбора XML-документа, а другой для использования стандартной модели на веб-сайте. Я хотел бы держаться подальше от этого, если смогу.
После всех моих исследований я наткнулся на RestSharp, и мне интересно, есть ли способ обработать POST-запросы массового назначения с помощью RestSharp. Я хотел бы иметь возможность сделать что-то вроде следующего:
В приложении MVC3...
public class RegistrationRequest {
public string Email { get; set; }
public string RequestedUserName { get; set; }
public bool Register(string domain) {
// Do registration stuff.
}
}
public class AccountController : Controller {
[Authorize,HttpPost]
public ActionResult Register(IEnumerable<RegistrationModel> models) {
return models.Any(model => !model.Register(this.Url.DnsSafeHost))
? new HttpStatusCodeResult(400)
: new HttpStatusCodeResult(200);
}
}
В настольном приложении...
public class RegistrationRequest {
public string Email { get; set; }
public string RequestedUserName { get; set; }
}
public class RegistrationService {
public void CreateUsers() {
List<RegistrationRequest> registrations = new List<RegistrationRequest>();
// list of requested users built up by app
var client = new RestClient(baseUrl);
var request = new RestRequest("Account/Register", Method.POST);
//request.AddAllMyObjects(registrations);
var response = client.Execute(request);
}
}
Кто-нибудь может дать мне какие-нибудь советы о том, как этого добиться?
1 ответ
Посмотрев документы и перемотав туда-сюда Джона Шинана, я обнаружил, что в настоящее время это невозможно. В итоге я сделал особые запросы к API, который мы разработали. Так как это работает в фоновом режиме, это на самом деле не влияет на взаимодействие с пользователем в настольном приложении, и запросы в любом случае должны быть меньше и более краткими.
Я обнаружил, что это на самом деле позволило нам в любом случае получить лучшие результаты по каждому отдельному случаю "успешно / неудачно" и обрабатывать их соответствующим образом. Хотя это могло бы быть приятно, этот запрос "по одному за раз" в итоге оказался лучше.