【问题标题】:Post And Redirect in WCF Service在 WCF 服务中发布和重定向
【发布时间】:2016-05-23 08:01:55
【问题描述】:

我正在尝试实施支付网关。在最后一步中,我必须将数据发布到特定的 URL,然后重定向客户端。在 asp.net 中它是如此简单。我只是写了一个java脚本来做到这一点。然后我这样称呼它:

ClientScript.RegisterStartupScript(typeof(Page), "ClientScript", "<script language='javascript' type='text/javascript'> postRefId('" + "13" + "');</script> ", false);

但现在我想在 wcf 服务中做同样的事情。我不知道我该怎么做。我找到了this 文章,但它不起作用。 我也试过这个,但它没有工作:

var request = (HttpWebRequest)WebRequest.Create(url);
request.Method = "POST";
request.ContentType = "application/x-www-form-urlencoded";
request.ContentLength = body.Length;
using (var writer = new StreamWriter(request.GetRequestStream()))
    writer.Write(body);

HttpContext.Current.Response.Redirect(url);

【问题讨论】:

    标签: c# asp.net .net web-services wcf


    【解决方案1】:

    我终于找到了答案。 看来我们无法在 wcf 服务中重定向和发布。所以我在我的项目中添加了一个 aspx 页面。然后我像这样重定向到这个页面:

            WebOperationContext.Current.OutgoingResponse.StatusCode = HttpStatusCode.Redirect;
            WebOperationContext.Current.OutgoingResponse.Location = "mypage.aspx?123456";
    

    然后我使用这个类:

    public class RemotePost
    {
        private string url;
        private string method;
        private Dictionary<string, string> inputs;
    
        public string Url
        {
            set { url = value; }
            get { return url; }
        }
        public string Method
        {
            set { method = value; }
            get { return method; }
        }
        public Dictionary<string, string> Inputs
        {
            set { inputs = value; }
            get { return inputs; }
        }
    
    
        public RemotePost(string url, string method = "post")
        {
            Url = url;
            Method = method;
            Inputs = new Dictionary<string, string>();
        }
        public void PostAndRedirect()
        {
            var postString = new StringBuilder();
            postString.Append("<html><head>");
            postString.Append("</head><body onload=\"document.form1.submit();\">");
            postString.Append("<form name=\"form1\" method=\"" + Method + "\" action=\"" + Url + "\" >");
    
            foreach (KeyValuePair<string, string> oPar in Inputs)
                postString.Append(string.Format("<input name=\"{0}\" type=\"hidden\" value=\"{1}\">", oPar.Key, oPar.Value));
    
            postString.Append("</form>");
            postString.Append("</body></html>");
    
            HttpContext.Current.Response.Clear();
            HttpContext.Current.Response.Write(postString.ToString());
            HttpContext.Current.Response.End();
        }
        public void Add(string name, string value)
        {
            lock (Inputs)
                Inputs.Add(name, value);
        }
    }
    

    在我的页面加载事件中以重定向和发布。这样我就可以重定向并在 wcf 服务中发布。 希望能有所帮助。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2014-07-31
      • 1970-01-01
      • 2011-05-18
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2010-09-27
      相关资源
      最近更新 更多