【问题标题】:POST values from winform to aspx webformPOST 值从 winform 到 aspx webform
【发布时间】:2019-07-15 07:09:53
【问题描述】:

我知道这个问题已经回答了很多次,但我仍然在将值从 winform 发布到 aspx 页面时遇到问题。我总是得到一个空值。

以下是我的winform代码:

string formContent = "FormValue1=" + contact.Country;

        var dataBytes = System.Text.Encoding.UTF8.GetBytes(formContent);
        HttpWebRequest httpWebRequest = (HttpWebRequest)WebRequest.Create("http://localhost:52262/Default.aspx");
        httpWebRequest.ContentType = "application/x-www-form-urlencoded";           

        httpWebRequest.ContentLength = dataBytes.Length;

        httpWebRequest.Method = WebRequestMethods.Http.Post;

        Stream dataStream = httpWebRequest.GetRequestStream();            

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

        HttpWebResponse response = (HttpWebResponse)httpWebRequest.GetResponse();

        //lblShow.Text = ((HttpWebResponse)response).StatusDescription;

        Stream responseStream = response.GetResponseStream();

        StreamReader streamReader = new StreamReader(responseStream);

        string responseFromServer = streamReader.ReadToEnd();          

        streamReader.Close();                        
        response.Close();   

以下是我的 Default.aspx 页面代码:

protected void Page_Load(object sender, EventArgs e)
    {
        ClaimsPrincipal claimsPrincipal = Page.User as ClaimsPrincipal;

        if (claimsPrincipal != null)
        {
            this.ClaimsGridView.DataSource = claimsPrincipal.Claims;
            this.ClaimsGridView.DataBind();
        }

        Session["Name"] = Request.Form["FormValue1"];
    }

请求表单值始终具有空值。相同的代码在 MVC 中有效,但在 Web 表单中总是失败。

任何帮助或指导都会很棒。

提前谢谢!!!..

【问题讨论】:

    标签: c# asp.net http-post winforms-to-web


    【解决方案1】:

    如果您在网站上启用了 FriendlyURLS,它将干扰 Request.Form 收集:

    结帐:https://www.mikesdotnetting.com/article/293/request-form-is-empty-when-posting-to-aspx-page

    万一上述网址停止工作:

    修改友好 URL 的配置您将在 App_Start 文件夹的 RouteConfig.cs 文件中找到此配置。要更改的配置是 AutoRedirect 模式,默认情况下设置为 RedirectMode.Permanent。评论此设置:

    public static void RegisterRoutes(RouteCollection routes)
    {
        var settings = new FriendlyUrlSettings();
        //settings.AutoRedirectMode = RedirectMode.Permanent;
        routes.EnableFriendlyUrls(settings);
    }

    【讨论】:

    • 我现在可以获取表单值了。感谢您采用这种方法。
    • 在调用winform app之前,我们如何获取已经在网站级别设置的会话值。因此,在将值从 winform 发布回网站时,我可以重新使用 Session 变量。
    • 会话值默认存储在 Web 服务器的内存中。您需要将会话值存储在 SQL 数据库、ASP.NET 状态服务器或自定义服务器中。如果 ASP.NET 或 IIS 进程或 ASP.NET 应用程序重新启动以使会话值可用于 Web 场中的所有服务器,这将保留会话值。通过在应用程序配置的 sessionState 元素中将 mode 属性设置为有效的 SessionStateMode 值来配置此行为。见docs.microsoft.com/en-us/dotnet/api/…
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多