我有一个返回重定向的ActionResult:
public ActionResult TeamviewerConnect(int id)
{
snipped ...
return Redirect("impacttv://" + Endpoint.tbl_computerinfo.FirstOrDefault().teamviewerID + "::" + teamviewerPassword);
}
impacttv://是一种自定义协议,可在IE和Chrome中作为标准链接使用。
这在Chrome中运行良好,但IE浏览器中有404s - 有人有想法吗?
答案 0 :(得分:3)
请参阅:Error redirecting to a custom URL protocol。
我知道这已经有一段时间了,但是this blog post 描述了自定义协议的重定向行为。
坏消息是,重定向不适用于IE。
这说IE不能这样做。我最好的建议是为您的重定向创建一个特殊视图,并使用元重定向或使用JavaScript来设置window.location
。
另一种选择是将初始调用作为MVC WebApi AJAX方法进行,返回Uri然后设置位置,以便用户不会离开“开始”##页。我以前使用过最后一种方法,可以确认它确实有用。
你需要安装Mvc WebApi nuget软件包,可能还有一些我无法记住的其他软件包:p
<强> TvController.cs 强>
public class TVController: ApiController
{
[HttpGet]
public string TeamviewerConnectUri(int id)
{
return "impacttv://" + Endpoint.tbl_computerinfo.FirstOrDefault().teamviewerID + "::" + teamviewerPassword;
}
}
JS(使用jQuery,因为它默认包含在MVC项目中)
var apiUrl = '/api/tv/TeamviewerConnectUri';
$.get(apiUrl, {id: 1 })
.then(function(uri)) {
window.location = uri;
// window.open(uri);
});
<强> TvController.cs 强>
public class TVController: ApiController
{
[HttpGet]
public ActionResult TeamviewerConnectUri(int id)
{
return Json(new {uri = "impacttv://" + Endpoint.tbl_computerinfo.FirstOrDefault().teamviewerID + "::" + teamviewerPassword}, JsonRequestBehavior.AllowGet);
}
}
JS(使用jQuery,因为它默认包含在MVC项目中)
var apiUrl = '/tv/TeamviewerConnectUri';
$.get(apiUrl, {id: 1 })
.then(function(data)) {
window.location = data.uri;
// window.open(data.uri);
});