【问题标题】:return url is not working on Live server vs development server返回 url 在实时服务器与开发服务器上不起作用
【发布时间】:2012-03-05 05:47:36
【问题描述】:

我有一个 MVC3 Razor 视图,它有一个需要用户登录的链接,它的 html 是这样的:

<a href="Home/Login?returnUrl=/myprojname/Product/Index">

然后在 homecontroller 和视图中登录一个动作方法。将值发布到登录操作方法。

在 post 操作方法中,我检查 returnurl 是否不为空,然后重定向到该 URL。在本地系统上它返回到这个地址

http://localhost:1235/myProjname/Product/Index

并且工作正常。但是当我将它上传到服务器(IIS 7)时,它返回到

http://domainname/myProjname/Product/Index

并给出 404,因为那里没有“myprojname”,如果我删除了“myprojname”,它将在实时服务器上与此 url 一起使用

http://domainname/Product/Index

但为此我需要像这样更改 href

<a href="Home/Login?returnUrl=/Product/Index">

在这种情况下,它不适用于带有 URL 的本地系统

http://localhost:1235/Product/Index

请提出解决方案

【问题讨论】:

    标签: asp.net-mvc asp.net-mvc-3


    【解决方案1】:

    你是认真的吗?

    好的,我们一起玩。

    解决方案是正确创建链接,而不是硬编码。

    @Html.ActionLink("Login", "Home", new { returnUrl = Url.Action("Index", "Product") })
    

    附带说明,您可能不需要将returnUrl 传递给操作。从动作方法本身的Request.UrlReferrer.AbsoluteUri 中拉回来。

    听起来并不粗鲁,但我强烈建议您前往 http://www.asp.net/mvc 并阅读/观看,然后再继续。

    【讨论】:

      【解决方案2】:

      使用Url.ActionUrl.Content 辅助方法将生成相对于应用程序根目录的URL,并避免这些问题。

      此外,@Href("~/") 将生成应用程序根目录的完整路径(从视图中)。

      【讨论】:

        猜你喜欢
        • 2016-12-16
        • 1970-01-01
        • 2011-07-21
        • 1970-01-01
        • 2015-05-09
        • 1970-01-01
        • 2012-09-03
        • 2018-06-08
        • 2019-07-26
        相关资源
        最近更新 更多