RedirectPermanent不会重定向到网址

时间:2016-06-21 17:32:37

标签: c# asp.net asp.net-mvc

我正在编写一个简单的URL缩短程序。

除了重定向外,一切正常。

以下是尝试重定向的代码:

public async Task<ActionResult> Click(string segment)
    {
        string referer = Request.UrlReferrer != null ? Request.UrlReferrer.ToString() : string.Empty;
        Stat stat = await this._urlManager.Click(segment, referer, Request.UserHostAddress);
        return this.RedirectPermanent(stat.ShortUrl.LongUrl);
    }

当我输入缩短的链接时(例如http://localhost:41343/5d8a2a),它会将我重定向到http://localhost:41343/www.google.com.br而不是www.google.com.br。

修改

检查答案后,它有效。这是最后一段代码。

if (!stat.ShortUrl.LongUrl.StartsWith("http://") && !stat.ShortUrl.LongUrl.StartsWith("https://"))
            return this.RedirectPermanent("http://" + stat.ShortUrl.LongUrl);
        else
            return this.RedirectPermanent(stat.ShortUrl.LongUrl);

谢谢!

1 个答案:

答案 0 :(得分:3)

而不是RedirectPermanent()尝试使用Redirect(),如下所示。指定的URL必须是绝对URL,否则它将尝试重定向到您的应用程序中。

您可以检查是否存在http://并相应添加

if(!stat.ShortUrl.LongUrl.Contains("http://"))
  return Redirect("http://" + stat.ShortUrl.LongUrl);

(OR)

使用StartsWith()字符串函数

if(!stat.ShortUrl.LongUrl.StartsWith()("http://"))
  return Redirect("http://" + stat.ShortUrl.LongUrl);