Две части: 1. c # winforms app 2. c # asp.net core mvc web app
В веб-приложении есть действие контроллера, которое принимает загрузку файла через.отправить запрос.
Настольное приложение должно отправить файл с URL-адресом действия веб-приложения без помощи пользователя.
Это было бы просто для меня, но веб-приложение требует, чтобы все запросы приходилиот лазурного авторизованного oauth.И для этого действия также требуется токен проверки.
Я решил использовать элемент управления webbrowser вместо простого httpwebrequest, полагая, что это позаботится о Azure Auth.И это делает, эта часть работает.
Затем я делаю запрос 'get' и успешно получаю форму из веб-приложения, присутствует токен, элемент ввода типа 'file' готов к приему файла.
Затем я пытаюсь передать значение файла в элемент.
Наконец, я вызываю вызов submit, который успешно выполняет действие веб-приложения на контроллере, токен проверяет, нофайла там нет ... он не установил значение для элемента ввода в предыдущем шаге c # winform.
Итак, мой второй подход - получить файл в элемент управления веб-браузера для отправки, используя .Navigate() метод, который имеет параметр, в который мы можем включить заголовки запроса.Я создал заголовок запроса для включения данных файла.
Опять же, он перемещается, контроллер веб-приложения отправляет запрос, но он не выполняется, потому что токен отсутствует, так как я не знаю, как это включить, и яначинаю отказываться от всего подхода к управлению веб-браузером, поскольку он кажется неуклюжим.
Если бы я мог использовать чистый запрос httpwebrequest, который был бы предпочтительным, но не знаю, как создать весь запрос, он включает в себя необходимые требования дляazure auth и проверочный токен.
Если я смогу заставить работать то, что у меня есть, это тоже подойдет.
Или, если кто-то может предложить лучший подход, который также будетотлично.
Спасибо.
ЗДЕСЬ ФОРМА HTML
<form id="frm2Upload" asp-action="UploadCompletions" asp-
controller="CutStations" method="post" enctype="multipart/form-data">
<div class="form-group col-lg-2">
<input type="file" accept=".xml" id="formFile" name="formFile" class="control-label text-info" value="" />
<br />
<button type="submit" class="btn btn-default"><span class="fa fa-cloud-upload-alt"></span> Upload File</button>
</div> </form>
ФАЙЛ НАСТРОЙКИ DESKTOP APP В ВЕБ-БРАУЗЕРЕ HTML DOC
public void Submit(string filepath)
{
System.Windows.Forms.HtmlElement htmlElement_InputFile = webBrowser.Document.GetElementById("formFile");
htmlElement_InputFile.SetAttribute("value", filepath);
form.InvokeMember("submit");
}