Получить переменные сеанса при вызове из Winforms в ASP.NET веб - PullRequest
0 голосов
/ 25 июня 2019

У меня есть веб-сайт, на котором я могу открыть exe-файл, используя пользовательскую зарегистрированную схему URI.Этот установщик exe или msi - это winform, который действует как самодостаточный веб-интерфейс API, где он получает параметры от вызова Ajax, сделанного с веб-сайта.

Так что это мой вызов Jquery с веб-сайта:

var appParameters = @Html.Raw(Json.Encode(Model));

    $.ajaxSetup({ cache: false });
    $.support.cors = true;

    $.ajax({
        type: 'GET',
        url: 'http://localhost:8080/api/parameters/digital',
        accepts: 'application/json',
        contentType: 'application/x-www-form-urlencoded',
        data: appParameters,
        success: function () {
            window.location.href = "http://localhost:8090/Home/Enroll";
        },
        onerror: function () {

        }
        });

И этот вызов сделан для моей winform, которая действует как самодостаточный веб-интерфейс.

Логика хостинга следующая:

var config = new HttpSelfHostConfiguration("http://localhost:8080");

        config.EnableCors();

        config.Routes.MapHttpRoute(
            "API Default",
            "api/{controller}/{id}",
            new { id = RouteParameter.Optional });

        using (HttpSelfHostServer server = new HttpSelfHostServer(config))
        {
            server.OpenAsync().Wait();
            System.Windows.Forms.Application.EnableVisualStyles();
            System.Windows.Forms.Application.SetCompatibleTextRenderingDefault(false);
            System.Windows.Forms.Application.Run(new MainForm(new ApiValueObserable<AppParameters>()));
        }

и это мой удар по ajax:

[HttpGet]
    public HttpResponseMessage Digital(string redirectPage, string redirectErrorPage, string responsePage, string successMessage)
    {
        var appParameter = new AppParameters
        {
            RedirectPage = redirectPage,
            RedirectErrorPage = redirectErrorPage,
            ResponsePage = responsePage,
            SuccessMessage = successMessage,                
        };

        ApiValueObserable<AppParameters>.Update(appParameter);

        return new HttpResponseMessage()
        {
            StatusCode = HttpStatusCode.OK,
            Content = null
        };
    }

После некоторой операции я нажимаю на форме кода сервера winforms, используя следующий код:

var dataBytes = System.Text.Encoding.UTF8.GetBytes(employee.ToString());

        var httpWebRequest = (HttpWebRequest)WebRequest.Create("http://localhost:51953/Home/Contact");
        httpWebRequest.ContentType = "application/x-www-form-urlencoded";

        //httpWebRequest.Credentials = CredentialCache.DefaultCredentials;
        //httpWebRequest.Credentials = new NetworkCredential("", "");            

        httpWebRequest.ContentLength = dataBytes.Length;

        httpWebRequest.Method = "POST";

        Stream dataStream = await httpWebRequest.GetRequestStreamAsync();

        dataStream.Write(dataBytes, 0, dataBytes.Length);
        dataStream.Flush();
        dataStream.Close();

Меня беспокоит то, что мне нужно создать промежуточную страницу обхода при переходе назад от winform квеб-сайт, поскольку я не могу передать учетные данные на веб-сайт, так как он использует « Аутентификация по формам ».Эта промежуточная веб-страница не может извлечь какие-либо переменные сеанса, которые есть на сервере.

Поэтому я хочу знать любые предложения / подходы к логике перенаправления, которые я могу сделать с этой промежуточной веб-страницы на другую веб-страницу, чтобы она получалавсе переменные сеанса или любой другой способ получения переменных сеанса, хранящихся на стороне сервера, через эту промежуточную веб-страницу.

Любая помощь будет полезна.

Заранее спасибо !!! ..

...