2011-04-21 15 views
6

Actualmente utilizamos esta línea de código para obtener la url aplicaciones de corriente en caso Application_Start.solicitud objeto en Application_Start caso

string sApplicationURL = HttpContext.Current.Request.Url.Scheme + "://" 
         + HttpContext.Current.Request.Url.Authority 
         + HttpContext.Current.Request.ApplicationPath; 

hace poco descubrí que en IIS7.0 el objeto Request ya no está disponible cuando se dispara el evento Application_Start.

¿Hay otra manera de obtener la url aplicaciones actuales sin necesidad de utilizar el objeto Request?

Gracias

Respuesta

9

Tener un vistazo a esto: http://mvolo.com/blogs/serverside/archive/2007/11/10/Integrated-mode-Request-is-not-available-in-this-context-in-Application_5F00_Start.aspx

En resumen, el error se produce porque el contexto de la petición ya no está disponible para el evento Application_Start. Este blog indica dos opciones para tratar este error:

1) Cambie el código para que funcione sin solicitud, o 2) Modifique su aplicación para que se ejecute en modo clásico (no recomendado).

Para obtener ApplicationPath, use HttpRuntime.AppDomainAppVirtualPath.

+3

debe elaborar en lugar de publicar un enlace desnudo a un blog que podría moverse – onof

+0

+1, buena idea, gracias – Jess

+1

+1. Además, puede obtener las otras dos piezas de información implementando un controlador para el evento Application_BeginRequest. Esto se describe en el artículo en la respuesta. – Naraen

0

Microsoft tiene un artículo todo-en-uno sobre todos los cambios que rompen incluido éste,

http://learn.iis.net/page.aspx/381/aspnet-20-breaking-changes-on-iis-70/

Sí, su contenido proviene de alguna manera http://mvolo.com (y la razón es simple).

+2

Todo esto es útil, pero ¿hay alguna manera de obtener la URL de la aplicación en el evento Application_Start? – desi

+0

Realmente no. Un sitio web de ASP.NET puede tener varios enlaces, podría ejecutarse en varios ordenadores y varios números de puerto https://stackoverflow.com/questions/4243270/how-to-get-full-host-name-port-number-in- aplicación-inicio-de-global-aspx – frenchone

Cuestiones relacionadas