出于某些原因,我不得不将请求从MVC 4应用程序重定向到具有位于其他域中的绝对URL的页面。下面是我使用的代码:
public ActionResult Test(string url)
{
return Redirect(url);
}当我在本地机器上试用它时,一切都很好,但是当我将代码发布到产品中并试图在那里工作时,我会遇到一些问题.例如,要将请求重定向到“https://stackoverflow.com/questions/ask”,它将被重定向到“http://{{myserverdomain.com}}/questions/ask'”。因此,请求将被重定向到本地路径‘质询/询问’,而不是绝对URL。
不知道我该去哪里查。我很想知道什么可能是问题所在,在哪里检查.
以防万一:服务器是Windows 2008 R2企业
更新
URL/HTML编码不是问题的原因。将方法更改为
public ActionResult Test()
{
return Redirect("https://stackoverflow.com/questions/ask");
}会给出同样的结果。它将被重定向到‘质询/问’/怀疑使用URL重写模块的原因,但还不知道如何检查它.
溶液
下面是帮助解决问题的链接:http://forums.iis.net/t/1171047.aspx
发布于 2013-06-04 16:23:42
经过一些尝试,我没有取得任何成功.所以我决定换一种方式,准备通过重定向页面进行某种定制的重定向,从而改变JavaScript的位置。
这是密码..。
Helper方法
public static void CustomRedirect(this HttpResponseBase response, string url)
{
string customRedirectPage = ConfigurationManager.AppSettings["custom_redirect_page"];
if (string.IsNullOrEmpty(customRedirectPage))
response.Redirect(url);
else
{
byte[] bytesToEncode = Encoding.UTF8.GetBytes(url);
string base64 = Convert.ToBase64String(bytesToEncode);
response.Redirect(string.Format("{0}?url={1}", customRedirectPage, base64));
}
}Web.config
<add key="custom_redirect_page" value="/Redirect/RedirectTo"/>控制器
public ActionResult RedirectTo(string url)
{
return View((object)System.Text.Encoding.UTF8.GetString(Convert.FromBase64String(url)));
}和
@section Scripts {
<script type="text/javascript">
$(document).ready(function () {
var url = '@Html.Raw(Model)';
window.location = url;
});
</script>
}我不喜欢这样的黑客,但这对我有用.
发布于 2013-03-28 01:27:03
很奇怪因为这是正确的方式..。
public ActionResult YourAction()
{
// ...
return Redirect("http://www.example.com");
}不能直接从ajax响应执行服务器端重定向。但是,您可以使用新的url返回一个JsonResult,并使用javascript执行重定向。
服务器端:
public ActionResult YourAction()
{
// ...
return Json(new {url = "http://www.example.com"});
}客户端:
$.post("@Url.Action("YourAction")", function(data) {
window.location = data.url;
});https://stackoverflow.com/questions/15672491
复制相似问题