C# 为什么mozilla在使用.NETMVC语句重定向时会更改字符?
当一切都完成后,我试图重定向到一个外部网站,但是firefox改变了url上的http单词以获得一组奇怪的字符。这是我的服务器端代码:C# 为什么mozilla在使用.NETMVC语句重定向时会更改字符?,c#,asp.net-mvc-4,redirect,mozilla,C#,Asp.net Mvc 4,Redirect,Mozilla,当一切都完成后,我试图重定向到一个外部网站,但是firefox改变了url上的http单词以获得一组奇怪的字符。这是我的服务器端代码: [HttpPost] public ActionResult Postular(INFO_BASE_POSTULACION_model pInfoPostulacion) { string rutMD5 = Request["rutMD5"]; int idRegion = Convert.ToInt32(Requ
[HttpPost]
public ActionResult Postular(INFO_BASE_POSTULACION_model pInfoPostulacion) {
string rutMD5 = Request["rutMD5"];
int idRegion = Convert.ToInt32(Request["idRegion"]);
int idInstrumento = Convert.ToInt32(Request["idInstrumento"]);
string urlDestino = "";
try
{
#region VALIDACION DE DATOS
if (!ModelState.IsValid) {
TempData["ModelState"] = ModelState;
return RedirectToAction("Index", new { data = Utilidades.Base64Encode(rutMD5 + ";" + idRegion + ";" + idInstrumento) });
}
#endregion
INFO_BASE_POSTULACION nuevaInfoBasePostulacion = new INFO_BASE_POSTULACION();
nuevaInfoBasePostulacion = pInfoPostulacion.modeloToDTO(pInfoPostulacion);
nuevaInfoBasePostulacion.TOKEN = Utilidades.GenerarStringUnico();
nuevaInfoBasePostulacion.INFO_REGISTRO_ELIMINADO = false;
nuevaInfoBasePostulacion.FECHA_CREACION = DateTime.Now;
Boolean todoOK = new InfoBasePostulacionBO().Agregar(nuevaInfoBasePostulacion);
if (!todoOK)
{
ModelState.AddModelError(String.Empty, "Ocurrió un error al intentar guardar la información.");
TempData["ModelState"] = ModelState;
return RedirectToAction("Index", new { data = Utilidades.Base64Encode(rutMD5 + ";" + idRegion + ";" + idInstrumento) });
}
string token = nuevaInfoBasePostulacion.TOKEN;
string idFormulario = Convert.ToString(nuevaInfoBasePostulacion.ID_FORMULARIO_POSTULACION);
string nombreParamToken = ConfigurationManager.AppSettings["ProActiveOffice-paramNombre-Token"];
string nombreParamIdFormulario = ConfigurationManager.AppSettings["ProActiveOffice-paramNombre-IdFormulario"];
urlDestino = ConfigurationManager.AppSettings["ProActiveOffice-URL"] + "?" + nombreParamToken + "=" + token + "&" + nombreParamIdFormulario + "=" + idFormulario;
//Here i had yo use the uriBuilder because i couldn't make it work on any other way.
UriBuilder uri = new UriBuilder(urlDestino.Trim());
//Here i redirect to an external website.
return Redirect(uri.Uri.ToString());
}
catch (Exception ex)
{
log.Error("Error al intentar guardar info base de postulación", ex);
ModelState.AddModelError(String.Empty, "Ocurrió un error al intentar guardar la información.");
TempData["ModelState"] = ModelState;
return RedirectToAction("Index", new { data = Utilidades.Base64Encode(rutMD5 + ";" + idRegion + ";" + idInstrumento) });
}
}
在这里您可以看到调试:
1-这里您可以看到我拥有的url字符串(我必须删除“http://”,因为它无法与uri生成器正常工作):
2-这里您可以看到uri生成器的值,其中包含字符串url:
3-这里您可以看到toString()方法应用于uri(我已经使用了绝对uri属性):
4-现在终于是错误了。http字已更改为一组字符:
我在重定向方面遇到了很多问题。这些代码目前正在Chrome上运行,但在firefox上会出现这些错误
可能是什么
顺便说一下,我正在使用visual studio 2013+.NET Framerowk 4.5+MVC4
%E2%80%8B
是一个URL编码、UTF-8编码的零宽度空格字符。您的应用程序设置文件中可能隐藏了一个proactiveofficeurl
值。如果您从某处复制URL,它可能是以这种方式粘贴的。%E2%80%8B
是一个URL编码、UTF-8编码的零宽度空格字符。您的应用程序设置文件中可能隐藏了一个proactiveofficeurl
值。如果您从某个地方复制了URL,它可能就是这样粘贴的。您确定您的ProActiveOffice URL
应用程序设置中没有垃圾吗?您可能在该URL的开头有一个零宽度的空间。我删除了web.config(ProActiveOffice URL)的设置,并从头添加了它,它起了作用,所以我猜这是一种看不见的空间。谢谢各位。您确定您的ProActiveOffice URL
应用程序设置中没有垃圾吗?您可能在该URL的开头有一个零宽度的空间。我删除了web.config(ProActiveOffice URL)的设置,并从头添加了它,它起了作用,所以我猜这是一种看不见的空间。谢谢各位。您确定您的ProActiveOffice URL
应用程序设置中没有垃圾吗?您可能在该URL的开头有一个零宽度的空间。我删除了web.config(ProActiveOffice URL)的设置,并从头添加了它,它起了作用,所以我猜这是一种看不见的空间。谢谢大家。不,我没有空格事实上,如果你仔细看一下代码,你会注意到,当我安装uri生成器a时,在url字符串上使用修剪函数来避免空格问题,所以它必须是其他的。我删除了web.config(ProActiveOffice url)的设置,然后从头开始添加它,结果成功了,所以我猜那是一种看不见的空间。谢谢大家。不,我没有空格事实上,如果你仔细看一下代码,你会注意到,当我安装uri生成器a时,在url字符串上使用修剪函数来避免空格问题,所以它必须是其他的。我删除了web.config(ProActiveOffice url)的设置,然后从头开始添加它,结果成功了,所以我猜那是一种看不见的空间。谢谢大家。不,我没有空格事实上,如果你仔细看一下代码,你会注意到,当我安装uri生成器a时,在url字符串上使用修剪函数来避免空格问题,所以它必须是其他的。我删除了web.config(ProActiveOffice url)的设置,然后从头开始添加它,结果成功了,所以我猜那是一种看不见的空间。谢谢你们。