在WCF服务中发布和重定向

时间:2016-05-23 08:01:56

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

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

localhost

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

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

1 个答案:

答案 0 :(得分:0)

最后我找到了答案。 看来我们无法在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服务中重定向和发布。 希望可以帮助。