我正在尝试实施支付网关。在最后一步,我必须将数据发布到特定的URL,然后重定向客户端。在asp.net中它如此简单。我刚刚写了一个java脚本来做到这一点。然后我称之为:
localhost
但现在我想在wcf服务中做同样的事情。我不知道我怎么能这样做。我发现this文章,但它不起作用。 我也试过这个但是它没有用到下面:
ClientScript.RegisterStartupScript(typeof(Page), "ClientScript", "<script language='javascript' type='text/javascript'> postRefId('" + "13" + "');</script> ", false);
答案 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服务中重定向和发布。 希望可以帮助。