我想使用WEB API重定向HTML页面。我使用ASP.Net Web API作为后端,前端使用Angular 5。下面是我的代码。这是我更新的API源代码。
[System.Web.Http.HttpGet]
public string[] Payment(string uri)
{
try
{
RegistrationRequestX reg = new RegistrationRequestX();
reg.Customer = "Test Api";
reg.Channel = Channels.Web;
reg.Language = "EN";
reg.Amount = 10;
reg.OrderID = "1234";
reg.OrderInfo = "test info";
reg.OrderName = "testing order";
string retPath = uri;
retPath = retPath.Replace("payment", "confirmation");
reg.ReturnPath = retPath;
RegistrationResponseX res = new RegistrationResponseX();
res = client.Register(reg);
client.Close();
string[] sess = new string[2];
sess[0] = paymentPortalURL;
sess[1] = transactionID;
return sess;
}
catch (Exception)
{
throw;
}
}发布于 2018-05-24 16:56:34
您可以将重定向uri返回到angular客户端,状态代码为302。在angular,你应该检查返回的状态码。如果是302,则重定向到返回的重定向url。
发布于 2018-05-24 17:51:17
使用angular中的window.location.href设置返回的数组的第一个元素,以重定向到预期的Url
发布于 2018-05-24 19:10:38
您可以在IHttpActionResult上更改控制器方法的返回类型,并使用从ApiController继承的Ok和Redirect方法返回。
例如,如果您想返回带有ok代码的string[] (200)或带有Location响应头的重定向(302)并提供重定向链接,请参阅下面的代码,这取决于某些条件:
[System.Web.Http.HttpGet]
public IHttpActionResult Payment(string uri)
{
string[] sess = ...
if (someRedirectCondition)
return Redirect("http://a.link.to.your.html.page");
else
return Ok(sess); // A method type is inferred to Ok<string[]>(string[] content)
}https://stackoverflow.com/questions/50504999
复制相似问题