Vale, He estado leyendo y experimentando mucho sobre este tema, y creo que reuní y recopilé información suficiente para ayudar a aquellos que podrían tropezar con este hilo al buscar este error. Lo que haré es simplemente ofrecer una explicación coloquial seguida de varios enlaces a información muy relevante.
Existen dos metodologías distintas de diseño web compatibles con Visual Studio; aplicaciones web y sitios web. Esto es cierto de 2005, 2008 y 2010. Esta división de los principios de diseño provino, aparentemente, del hecho de que Visual Studio 2003 solo admitía el modelo de aplicación web y este modelo se modificó con el lanzamiento de Visual Studio 2005, luego con el fin de hacer que los principios de diseño sean consistentes con las versiones anteriores, la metodología de la Aplicación Web se agregó a Visual Studio 2005 creando una bifurcación muy confusa en el camino para los desarrolladores de, al parecer, incluso niveles de habilidad respetables.
No entraré en detalles sobre las diferencias entre los dos modelos. Hay muchos detalles en los enlaces al final de esta publicación. Pero basta con decir que los perfiles NO son compatibles con la funcionalidad de la aplicación web.
Además, para complicar aún más las cosas, y esto es lo que me ha estado molestando, los perfiles no funcionarán con el modelo del sitio web si el sitio se publica mediante la opción de menú Build -> Publicar sitio web a menos que tal vez) se precompila manualmente primero, luego las dlls precompiladas se copian a través de "copiar sitio" o FTP o lo que sea que use. La precompilación es aparentemente realizada a través de la línea de comando. Tengo un enlace con instrucciones sobre cómo hacerlo a continuación. Pero, nuevamente, no lo he probado yo mismo, así que no sé si incluso ayuda. El motivo por el cual los perfiles no funcionan con el método de despliegue Build -> Publish Web Site es porque la clase ProfileCommon está construida dinámicamente con las propiedades de perfil que define en la configuración web cuando IIS compila dinámicamente su página por primera vez. se accede. Si utiliza la opción "compilar -> publicar sitio web" compila sus archivos DLL muy bien, pero no crea esta clase para usted.
Honestamente, no estoy seguro de por qué la opción Construir -> Publicar sitio web está incluida en el modelo del sitio web en primer lugar. De todo lo que he leído, el objetivo del modelo Sitio web vs Aplicación web es hacer que la experiencia ASP.net se asemeje más a una experiencia de desarrollo web tradicional, donde sus archivos pueden editarse en su máquina y enviarse por FTP al servidor o pueden hacerlo simplemente editado en el servidor. Sí, deben compilarse antes de que se acceda, pero esa compilación, por diseño, ocurre dinámicamente y, aparentemente, si primero compila el sitio y luego lo sube, lo compila sin crear dinámicamente la clase ProfileCommon y, por lo tanto, quitarle uno de las grandes características del enfoque asp.net para el diseño de sitios web.
Hay una serie de publicaciones donde las personas expresan su preocupación por la seguridad de su código, porque usar el modelo del sitio web y copiar sus archivos al servidor para compilación dinámica significa que los archivos con el código fuente se sientan en el servidor en un estado precompilado. Sin embargo, simplemente no veo la diferencia entre este y cualquier otro lenguaje de scripting web más tradicional como Perl, PHP o incluso ASP clásico. En esos idiomas, el código se considera vulnerable. Cualquier código es vulnerable en un servidor mal configurado. Además, incluso si su código está compilado, un pirata informático con la habilidad para eludir la seguridad de un servidor IIS bien configurado y obtener sus archivos de origen podría obtener sus archivos compilados y luego ejecutarlos a través de ILDASM.Entonces, a menos que estén profesionalmente ofuscados, ¿cuál es la diferencia?
Así que, por lo que descubrí, si desea usar perfiles en su sitio web asp.net, cree su sitio como Proyecto de sitio web frente a Proyecto de aplicación web y cópielo en su servidor en lugar de Publicarlo a través del menú de compilación. Es posible que pueda precompilarlo y luego publicarlo (no estoy seguro de eso) pero sé que simplemente copiarlo y dejarlo compilar dinámicamente funciona.
Si me falta algo y hay otra manera, me gustaría leer sobre ello. Mientras tanto, aquí hay algunos enlaces increíblemente útiles. Muchas gracias a 5arx para el establecimiento de mí en este camino:
http://www.codersbarn.com/post/2008/06/ASPNET-Web-Site-versus-Web-Application-Project.aspx
http://msdn.microsoft.com/en-us/library/dd547590.aspx
http://msdn.microsoft.com/en-us/library/ms227972.aspx
Sería bueno tener el error real y un código de ejemplo o de seguimiento de la pila parcial. – cofiem
Aquí está mi idea: pedirle a la comunidad votaciones ascendentes, para que pueda gastarlas como recompensa. –
¿Tiene información de excepción más detallada, incluido el seguimiento de la pila? –