我正在编写一个简单的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);
谢谢!
答案 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);