【问题标题】:MVC 2 how to go to url without redirecting?MVC 2 如何在不重定向的情况下转到 url?
【发布时间】:2011-06-03 11:07:50
【问题描述】:

有没有办法去一个网址而不重定向到它?基本上我想在后台从我的应用程序中调用一个 url,以便它可以注销依赖方。

感谢您的帮助。

【问题讨论】:

  • 什么?请问你能用英文说吗? - 在不理解的情况下,您可以随时致电domain.com/account/LogOut,这将清除分配给用户的当前凭据。
  • @balexandre:如果您这样做,那么您的应用程序将被定向到该页面,我想转到该 url 而不会被重定向到它。

标签: asp.net-mvc-2 logout urlrequest


【解决方案1】:

您尝试执行的操作不会与我们竞争,因为它与您自己的身份验证实施直接相关。

基于表单身份验证的普通 ASP.NET 身份验证,您将需要始终从浏览器中获取 URL,因为它依赖于给定的身份验证。 p>

您可以尝试一下,方法是打开您的网站并登录,然后在您的应用程序网址中打开其他浏览器品牌(不是浏览器窗口)...您会看到您还需要再次登录,因为身份验证已连接到第一个浏览器。

作为应用程序架构师,您可以通过实现另一种身份验证方式来实现这一点,通常在这种情况下,当您使用需要 身份验证代码的 Web 服务时会发生这种情况 首先(通过调用 Login 方法给出),并且始终需要将该代码附加到对系统的任何调用的正文或标题中。

这样您可以轻松删除验证码,所有过程调用都会失败。

如前所述,这不取决于我们,您需要创建正确的身份验证层


来自您的评论

就像使用 WebClient 对象一样简单

 WebClient client = new WebClient ();
 string reply = client.DownloadString (address);

【讨论】:

  • 你是对的,它是我的身份验证系统,但我的问题与我的身份验证如何工作无关,而是我如何在后台调用 url。你不需要知道或关心我的认证系统,我只是添加了一些背景信息。
  • 如果只是为了那个,你应该问这个!周围有很多教程。您可以使用HttpWebRequestWebClient
  • 我确实要求“基本上我想在后台从我的应用程序中调用一个 url”。
【解决方案2】:

如果您希望转移到新的 url 请求,您仍然可以使用

Server.TransferRequest()

这样做的问题是,如果不使用重定向,浏览器地址栏将不会反映您已将其请求移至另一个 URL 的事实。

【讨论】:

  • 我希望呼叫在后台发生,以便它退出依赖方。
【解决方案3】:

要让客户端在后台访问给定的 URL,您应该对其进行 AJAX 调用,或者可能有一个带有您的注销 url 的 src 的图像(尽管您必须确保返回的 FileResult 为你的形象也是)。这是大多数分析包在后台调用其相关 URL 的方式。

但这里的问题是两者都不是 100% 可靠的,关闭浏览器上的 javascript 或图像,这些结果就会失败。

根据您所说,我认为您所追求的是用户继续访问各种页面中的任何一个,而不是特定的注销页面。如果确实如此,那么您最好的解决方案实际上是双重重定向。

让您的应用程序重定向到您的注销 url,但事先将您希望他们进入的页面的 url 放入 tempdata。然后在注销页面的 actionresult 中,您可以根据需要进行注销并返回从 t​​empdata 到 url 的重定向。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2017-02-16
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-04-10
    • 2012-05-22
    • 1970-01-01
    • 2013-10-12
    相关资源
    最近更新 更多