2010-02-20 30 views
16

我定位的操作需要https。如果通过http发送请求,我已经有一个过滤器重定向到https,但是我希望通过https从头开始发送请求。如何在使用RedirectToAction时设置协议?

编辑

有来自达林答案(现在更新到别的东西),他问我为什么叫反正通过HTTP这第一次行动。他有一个好点,我刚刚更新了几个链接。这是解决我的问题的最简单最安全的方法。

一旦我找到评估çağdaş答案,我将以此为正确的答案,因为我想对其他一些人的兴趣,多数民众赞成的时间(......包括我的未来)

回答

14

我不知道,如果你必须使用RedirectToAction但有UrlHelper和控制器的Redirect方法,你可以这样做:

public ActionResult SomeAction() { 
    UrlHelper u = new UrlHelper(this.ControllerContext.RequestContext); 
    return Redirect(u.Action("actionName", "controllerName", null, "https")); 
} 
+0

说实话,我不知道重定向和RedirectToAction之间的区别。使用TempData时可能会有所不同。我必须尝试这一个。目前看起来很完美。 – 2010-02-21 13:21:29

+0

@Malcolm Frexner好,不同之处在于其中一个('Redirect')将URI作为参数,而另一个则采用“某些值字典”(引用源代码)。此外,TempData不应该有任何问题,因为它们最终都以相同的方式重定向。 – 2010-02-21 13:42:44

+2

这是一件非常奇怪的事情,但它确实有效。当然,很多人不得不翻到一个安全的购物车,然后在结帐完成后转回到香草的http。我很惊讶没有常规的RedirectToAction函数的选项。 – 2012-02-23 18:42:29

0

您可能需要请参阅this article,它说明如何在路由级别启用HTTPS。