asp.net c#-2.0 server.transfer

asp.net - Server.Transfer produce un error al ejecutar la solicitud secundaria. ¿Cómo resolver?



c#-2.0 (7)

Encontré una alternativa a Server.Transfer ()

solía

HttpContext.Current.RewritePath("somefile.aspx");

Esto solucionó el problema.

Tengo un HttpModule en C # 2.0 que maneja las excepciones lanzadas. Cada vez que se produce la excepción, se llamará una página de error (aspx) con alguna cadena de consulta. Se realiza a través de Server.Transfer() .

Pero cuando el control intenta ejecutar Server.Transfer() , se lanza la siguiente excepción:

Error al ejecutar la solicitud secundaria para [nombre de página] .aspx.

Considerando que Request.Redirect() funciona bien.

Intenté configurar EnableViewStateMac="false" en la directiva de página de la página a la que se transfiere la solicitud. Aún persiste el problema.

Aquí está el código que probé:

string errorPage = "errorpage.aspx?id=" + someErrorId HttpContext.Current.Server.Transfer(errorPage,true);

¿Alguna idea de cómo se puede resolver esto?


Estaba enganchando al canal de solicitud en el evento OnPreRequestHandlerExecute , y descubrí que no podía usar Server.Transfer porque arrojó el mismo error que el tuyo sobre la ejecución de una solicitud secundaria.

Usar HttpContext.Current.RewritePath no funcionó porque parecía ignorado y no fui redirigido a ningún lado.

Si está utilizando IIS 7 y superior, puede usar Server.TransferRequest en su lugar, que fue el truco para mí.

Las diferencias entre los dos métodos se cubren en esta respuesta: TransferRequest vs Transfer en ASP.Net


Mi solución fue diferente:

Una consulta en línea produjo este artículo de Microsoft Knowledge Base que establecía que la resolución sería utilizar Response.Redirect en lugar de Server.Transfer .

Cambié el comando y obtuve un " Mensaje de error 404 " más preciso en lugar del mensaje críptico " Error al ejecutar una solicitud secundaria ".

Eso me llevó a inspeccionar la cadena de redireccionamiento y noté que mi camino estaba apagado.

Arreglé la cadena de transferencia de "ErrorPage.aspx" a "../ErrorPage.aspx" (note el cambio de ruta) y Server.Transfer funcionó bien.



Si ve que ocurre esta excepción en el IDE de VS.NET durante la depuración, avance al menos una vez y presione F5 para continuar con la depuración. En mi caso, la página real se representó con la excepción ASP.NET que realmente estaba causando el problema. En mi caso tuve un control asp:ChangePassword incorrectamente formateado asp:ChangePassword que en realidad estaba causando la excepción "Error al ejecutar la solicitud secundaria".


Tuve este mismo problema y descubrí que tenía que ver con las rutas relativas de dónde se está ejecutando el Server.Transfer y hacia dónde se está redireccionando. En mi caso, esto se estaba ejecutando en un subdirectorio, por lo que la respuesta de @ ray (agregando ../ al inicio de la URL) funcionó. Sin embargo, cuando ejecuté en el directorio anterior, sucedió lo mismo. Por lo tanto, cambié a usar una ruta enraizada:

Server.Transfer("~/errorpage.aspx")


Server.Transfer ("mywebpage.aspx") parece funcionar solo cuando ya existe una sesión.

Si no hay ninguna sesión iniciada, se produce este error, por lo que debe usar Response.Redirect u otro método.