No se puede evaluar la expresión porque el código está optimizado o hay un marco nativo encima de la pila de llamadas


Estoy recibiendo el error:

No se puede evaluar la expresión porque el código está optimizado o hay un marco nativo encima de la pila de llamadas.

He redirigido a una nueva página en el evento itemcommand del repetidor. El error se produce en la línea:

string url = "~/Galleries/AlbumImageList.aspx?UId=" + this.UserId.ToString() + "&AlbumId=" + e.CommandArgument.ToString();
Response.Redirect(url);

¿Alguien puede ayudarme? ¿Pasa algo ahí? El _COMPlusExceptionCode es -532459699.

Author: hims056, 2010-01-11

10 answers

Request.Redirect(url,false);

false indica si la ejecución de la página actual debe terminar.

 156
Author: PrateekSaluja,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2013-07-31 14:21:45

Hacer segundo argumento de Response false como se muestra a continuación.

Response.Redirect(url,false);
 115
Author: Radhi,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2014-04-28 11:20:27

Resolución

Para solucionar este problema, utilice uno de los siguientes métodos:

Síntomas

Si utiliza la respuesta.Fin, Respuesta.Redireccionar, o Servidor.Transferencia método, se produce una excepción ThreadAbortException. Puedes usar un declaración try-catch para capturar esta excepción.

Causa

La Respuesta.El método End finaliza la ejecución de la página y desplaza ejecución al evento Application_EndRequest en el canalización de eventos. La línea de código que sigue a la respuesta.El fin no es ejecutar.

Este problema ocurre en la Respuesta.Redireccionamiento y Servidor.Transferencia métodos porque ambos métodos llaman a la respuesta.Termina internamente.

Estado

Este comportamiento es por diseño.

Propiedades

ID del artículo: 312629 - Última revisión: 30 de agosto de 2012 - Revisión: 4.0

Se Aplica a

  • Microsoft ASP.NET 4,5
  • Microsoft ASP.NET 4
  • Microsoft ASP.NET 3.5
  • Microsoft ASP.NET 2.0
  • Microsoft ASP.NET 1.1
  • Microsoft ASP.NET 1,0

Palabras clave: kbexcepthandling kbprb KB312629

Fuente: PRB: ThreadAbortException Ocurre Si Se Usa Response.Fin, Respuesta.Redireccionar, o Servidor.Transferencia

 63
Author: Michel Ayres,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2014-05-15 11:19:29

En un error que estaba investigando hubo una respuesta.Redirect() y se estaba ejecutando en una ubicación inesperada (leer: ubicación inapropiada - dentro de un método getter de propiedad de miembro).

Si está depurando un problema y experimenta la expresión "No se puede evaluar... " excepción:

  1. Realice una búsqueda de Response.Redirect() y hacer que el segundo parámetro endResponse = false, o
  2. desactivar Temporalmente el redireccionar llamada.

Esto fue frustrante ya que parecería ejecutar la llamada de redirección antes de que el "paso a través" en el depurador hubiera llegado a esa ubicación.

 14
Author: Nick Josevski,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2014-04-28 11:24:32

Por favor, compruebe este enlace para la razón detrás de este problema y la solución para el error:

Http://support.microsoft.com/kb/312629/EN-US /

Artículo de Soporte técnico de Microsoft:

PRB: ThreadAbortException Se Produce Si Se Utiliza Response.Fin, Respuesta.Redireccionar, o Servidor.Transferir Imprimir Imprimir Correo electrónico Correo electrónico

Para solucionar este problema, utilice uno de los siguientes métodos: Para Respuesta.Fin, llama a la HttpContext.Actual.Solicitud.Solicitud completa método en su lugar de Respuesta.Fin de eludir la ejecución de código a la Application_EndRequest evento.

Para la Respuesta.Redireccionar, usar una sobrecarga, Respuesta.Redireccionamiento (Url de cadena, bool endResponse) que pasa falso por el parámetro endResponse para suprimir la llamada interna a Respuesta.Final.

Por ejemplo: Respuesta.Redirect ("nextpage.aspx", false);

Si utiliza esta solución alternativa, el código que sigue a la respuesta.Redireccionamiento se ejecuta. Para Servidor.Transferir, utilizar el Servidor.Ejecutar método en su lugar.

 12
Author: Mandeep Janjua,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2014-07-08 21:59:00

Yo también tenía el mismo problema, y era complicado. Para mí, fue porque estoy usando Ext.Biblioteca javascript Js. Si usted está haciendo una respuesta.redirigir en el código del lado del servidor al que accedió en una llamada Ajax, hay problemas. Ext.js tiene una solución con su Ext.Método de redireccionamiento.

 3
Author: scott,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2010-09-02 17:04:42

Utilice este código para resolver el problema:

string path = AppDomain.CurrentDomain.BaseDirectory.ToString() + "Uploadfile\\" + fileName;
System.IO.FileStream fs = new System.IO.FileStream(path, System.IO.FileMode.Open, System.IO.FileAccess.Read);
byte[] bt = new byte[fs.Length];
fs.Read(bt, 0, (int)fs.Length);
fs.Close();
Response.ContentType = "application/x-unknown/octet-stream";
Response.AppendHeader("Content-Disposition", "attachment; filename=\"" + fileName;+ "\"");
try
{
    if (bt != null)
    {
        System.IO.MemoryStream stream1 = new System.IO.MemoryStream(bt, true);
        stream1.Write(bt, 0, bt.Length);
        Response.BinaryWrite(bt);
        //Response.OutputStream.Write(bt, 0, (int)stream1.Length);
        Response.Flush();
        // Response.End();
    }
}
catch (Exception ex)
{
    Response.Write(ex.Message);
    throw ex;
}
finally
{
    Response.End();
}
 3
Author: swathi,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2013-10-08 13:23:59

También Se Puede Utilizar Server.Execute

 3
Author: sambit.albus,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2014-05-12 11:18:04

Simplemente encase alguien más se encontró con los problemas que hice estaba utilizando la respuesta.End () un botón de disparo asíncrono

<asp:AsyncPostBackTrigger ControlID="btn_login" />

En un panel de actualización. Cambié al puesto regular de nuevo no es el mejor, pero funcionó.

<asp:PostBackTrigger ControlID="btn_login" />. 

Dado que solo estaba redirigiendo en la página, esta era una solución viable.

 2
Author: vikingben,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2013-12-17 17:29:21

Si está utilizando el panel de actualización y el botón de enlace para descargar excel está dentro del panel que agregar disparador postback

<asp:PostBackTrigger ControlID="lnkTemplate" /> 

Y en el Código detrás de dentro haga clic en evento

string ServerPath = System.Configuration.ConfigurationManager.AppSettings["FilePath"] + "Template.xlsx";
System.IO.FileInfo file = new System.IO.FileInfo(Server.MapPath(ServerPath));

HttpContext.Current.Response.Clear();
HttpContext.Current.Response.AddHeader("Content-Disposition", "attachment; filename=" + file.Name);
HttpContext.Current.Response.AddHeader("Content-Length", file.Length.ToString());
            HttpContext.Current.Response.ContentType = "application/octet-stream";
 HttpContext.Current.Response.TransmitFile(file.FullName);
 HttpContext.Current.Response.Flush();
 HttpContext.Current.ApplicationInstance.CompleteRequest();
 1
Author: Mudassir Hasan,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2016-08-17 06:37:10