Массовое назначение с использованием RestSharp, POST-запрос - MVC3 - PullRequest
2 голосов
/ 07 сентября 2011

Я проводил много исследований, пытаясь найти лучший способ передать 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 Ответ

1 голос
/ 28 апреля 2012

Посмотрев документы и быстро перемотав туда-сюда Джона Шинана , я обнаружил, что в настоящее время это невозможно. В итоге я сделал особые запросы к API, который мы разработали. Поскольку это работает в фоновом режиме, это не влияет на работу пользователя в настольном приложении, и запросы должны быть меньше и в любом случае более краткими.

Я обнаружил, что это на самом деле позволило нам в любом случае получать лучшие результаты по каждому отдельному случаю «успешно / неудачно» и обрабатывать их соответствующим образом. Хотя это могло бы быть приятно, этот запрос «один за другим» в итоге оказался лучше.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...