我遇到了Response.Redirect的问题,尽管阅读了很多帖子,但我还是无法解决我的特定问题。
我正在开发的网站通过网络服务与第三方集成。 Web服务按预期返回结果,然后我们执行一些内务处理,然后重定向到第三方提供的URL。
以下是发生的事情:
如果我们收到特定回复,我们希望通过回复中提供的链接重定向到附属网站
在上述之后,我们想要重定向;
Response.Redirect(resp.RedirectUrl, false);
Context.ApplicationInstance.CompleteRequest();
尽管使用了似乎正确的方法,我的第三方通知我,我们正在获得很高比例的失败重定向。在代码树中更高,有很多错误捕获,所以当它到达这一点时,它应该是一个简单重定向的情况。
我知道这可能并非都在我们的最后,并且已经要求一些模式数据来确定它发生在'谁'和'何时'。
与此同时,我正在努力确保我们的方面尽可能健全,所以我有几个问题。
提前致谢。
答案 0 :(得分:2)
使用此代码
Response.Redirect(resp.RedirectUrl, false);
Context.ApplicationInstance.CompleteRequest();
你让你的网站运行和其他代码(其余的在线上,其余的在页面的生命周期事件上)可能没有经过测试(因为你认为没有运行和重定向)或者可能有一些空值在那里你得到例外 - 在实际重定向之前运行的代码。
尝试使用该代码,停止进一步执行程序
Response.Redirect(resp.RedirectUrl, false);
return;
你得到一个ThreadAbortException
例外,但你需要通过一个受控停止来停止进一步运行程序。
相对 Redirect to a page with endResponse to true VS CompleteRequest and security thread
答案 1 :(得分:-1)
在第三方收到目标URL后,将其保存在数据库中。你可以使用' Sever.Transfer'而不是' Response.Redirect'。
Response.Redirect可能导致往返,因此会有延迟。
目标URL将由不同的域/ Web服务器处理,而不是从您的应用程序服务器处理。
因此,Server.Transfer将是此重定向操作的最佳选择。