Excepción de seguridad de ASP.NET WebPermission
system.security (4)
Por lo general, odio publicar este tipo de preguntas ya que normalmente encuentro que la mejor manera de aprender realmente es averiguar la respuesta por ti mismo.
Sin embargo, necesito una respuesta a esta pregunta muy rápido ya que tengo un cliente que no puede manejar su negocio debido a este problema.
Ayer mi proveedor de host ASP.NET movió mi aplicación de un servidor que ejecuta .NET 1.1 a uno ejecutando .NET 1.1 y 2.0. Mi problema es que cuando pruebo el movimiento, la página principal del sitio (Default.aspx) no se carga
"Descripción: la aplicación intentó realizar una operación no permitida por la política de seguridad. Para otorgar a esta aplicación el permiso requerido, póngase en contacto con el administrador del sistema o cambie el nivel de confianza de la aplicación en el archivo de configuración.
Detalles de la excepción: System.Security.SecurityException: solicitud del permiso de tipo ''System.Net.WebPermission, System, Version = 2.0.0.0, Culture = neutral, PublicKeyToken = b77a5c561934e089'' failed. "
[SecurityException: Solicitud del permiso de tipo ''System.Net.WebPermission, System, Version = 2.0.0.0, Culture = neutral, PublicKeyToken = b77a5c561934e089'' failed.] System.Security.CodeAccessSecurityEngine.Check (Object demand, StackCrawlMark & stackMark, Boolean isPermSet) +0 System.Security.CodeAccessPermission.Demand () +59 System.Net.HttpWebRequest..ctor (Uri uri, ServicePoint servicePoint) +147 System.Net.HttpRequestCreator.Create (Uri Uri) +26 System.Net.WebRequest .Create (Uri requestUri, Boolean useUriBase) +298 System.Net.WebRequest.Create (Uri requestUri) +28 System.Web.Services.Protocols.WebClientProtocol.GetWebRequest (Uri uri) +30 System.Web.Services.Protocols.HttpWebClientProtocol .GetWebRequest (Uri uri) +12 System.Web.Services.Protocols.SoapHttpClientProtocol.GetWebRequest (Uri uri) +4 System.Web.Services.Protocols.SoapHttpClientProtocol.Invoke (String methodName, Object [] parámetros) +52 PilatesPlusDublin.PilatesPlusDublinws .PilatesPlus.InsertException (String sModuleName, String s Exception, Int32 iUserID) +97 PilatesPlusDublin.MainDefault.Page_Load (Object sender, EventArgs e) +144 System.Web.UI.Control.OnLoad (EventArgs e) +99 System.Web.UI.Control.LoadRecursive () +47 Sistema .Web.UI.Page.ProcessRequestMain (Boolean includeStagesBeforeAsyncPoint, Boolean includeStagesAfterAsyncPoint) +7350 System.Web.UI.Page.ProcessRequest (Boolean includeStagesBeforeAsyncPoint, Boolean includeStagesAfterAsyncPoint) +213 System.Web.UI.Page.ProcessRequest () +86 Sistema. Web.UI.Page.ProcessRequestWithNoAssert (HttpContext context) +18 System.Web.UI.Page.ProcessRequest (HttpContext context) +49 ASP.maindefault_aspx.ProcessRequest (HttpContext context) +4 System.Web.CallHandlerExecutionStep.System.Web.HttpApplication .IExecutionStep.Execute () +358 System.Web.HttpApplication.ExecuteStep (paso IExecutionStep, booleano y completado sincrónicamente) +64 "
Si WebPermission no está disponible en el sitio de alojamiento, ¿cómo configuro mi sitio para permitir el acceso a la página? ¿Hay algunas etiquetas que deben colocarse en la web.config? Nota: no tenemos acceso a machine.config ni a ninguna otra configuración de IIS.
Entiendo que la gente odia leer y responder este tipo de preguntas, pero cualquier ayuda sobre lo que yo, o mi sitio de alojamiento debe hacer para solucionar esto, sería enormemente apreciada.
¿Su aplicación web llama a un servicio web o accede a sitios web externos? Si es así, es posible que deba hablar con su proveedor de alojamiento y solicitar que se agregue el URI a la lista de puntos finales de conexión permitidos.
No estoy seguro si esto ayudará, pero una vez tuve un cliente con el mismo tipo de problema. Su empresa de alojamiento web realizó algunos cambios, lo que provocó que su sitio web arrojara tipos similares de errores. Logramos que las cosas funcionen de nuevo agregando lo siguiente dentro de la sección System.Web en web.config:
<trust level="Full" />
Si esto no resuelve su problema y el alojamiento web no puede arreglar las cosas hasta el nuevo año, consideraría cambiar los proveedores de hosting.
Solo como un FYI a cualquiera que pueda tener el mismo problema: recibí este mensaje de error exacto y no pude entender qué estaba mal ya que no había cambiado ninguna configuración en mi cuadro local.
Después de un par de minutos me di cuenta de que accidentalmente había abierto el proyecto desde un recurso compartido de red en Windows Server 2008. Por supuesto, ¡los permisos no eran correctos! Mucho movimiento estúpido, pero si ayuda a alguien, estoy dispuesto a ser humillado :)
Estoy publicando esto en caso de que ayude a alguien más. Tenga cuidado antes de trasladar un sitio ASP.NET existente alojado por su proveedor a otro servidor.
ASEGÚRESE DE PREGUNTARLES SOBRE LOS PÁGINAS WEB Y LOS NIVELES DE CONFIANZA.
Esta fue la respuesta de mis proveedores ...
"Gracias por su correo electrónico.
Está fallando porque WebPermission no está disponible en un entorno de confianza medio.
No podemos realizar ningún cambio en estos servidores en este momento, ya que planeamos migrar todos los sitios a un par de nuevos clusters para fines de este año. Estoy seguro de que el nuevo clúster de Windows tendrá disponible WebPermission, ya que está habilitado en el clúster actual de Namesco Windows. "
Así que esperan que el sitio de mi cliente esté desconectado y pierda negocios hasta el año nuevo.