将asp页面重定向到另一个URL

时间:2016-07-13 05:14:19

标签: c# asp.net webmethod

我有一个没有动作属性的asp.net表单,提交将由ajax处理,如下所示。

$.ajax({
                url: "home2.aspx/DoSubmit",
                type: "POST",
                contentType: "application/json; charset=utf-8",
                data: '{x: "' + $("#x").val() + '",y: "' + $("#y").val() + '"}',
                dataType: "json",
                success: function (result)
                {
                    alert("success...");
                },
                error: function (xhr, status) {
                    alert("Error", status);
                }
            });
            return false;
        });
在为ajax调用提供相关响应之后代码中的

我想将asp.net页面重定向到另一个URL(甚至是不同的域)与其他参数,我在后端有。我测试这个方法,创建HttpWebRequest但不起作用。

var postData = (requestParam.ToString());
            var data = Encoding.ASCII.GetBytes(postData);
            HttpWebRequest request;
            try
            {
                request = (HttpWebRequest)HttpWebRequest.Create("https:someDomain");
            }
            catch (UriFormatException)
            {
                request = null;
            }
            request.Method = "POST";
            request.ContentType = "application/x-www-form-urlencoded";
            request.ContentLength = data.Length;
            Stream postStream = request.GetRequestStream()
            postStream.Write(data, 0, data.Length);
            postStream.Flush();
            postStream.Close();

导致此错误:身份验证失败,因为远程方已关闭传输流。
谢谢你的帮助

1 个答案:

答案 0 :(得分:2)

ajax调用是来自浏览器的OOB(带外)。它与浏览器导航机制完全ZERO连接。因此,您的重定向将无效。

您需要订阅ajax成功(和/或失败)事件。在那种情况下,您将通过任意数量的浏览器导航方法(例如window.location)进行重定向客户端。

如果您需要重定向网址来自服务器,请让您的操作将其作为ajax响应的一部分返回。