Pregunta

¡Estoy atascado y necesito a alguien que sepa SharePoint Preventh!

editar

Esto no es, no para otros errores como 404, 403 ECT, ¡este error es algo más! Solo se muestra cuando tiene un tipo de archivo bloqueado en el administrador central y vaya a esa extensión bloqueada por URL como > https://site.mysite.com/portal/default.asp , ¡la extensión ASP es un tipo de archivo bloqueado! Luego le mostrará la página ERROR.HTM SOLAMENTE! Si fuera incapacitado.aspx funcionaría como Normal Becasue ASPX no está en la lista de tipo de archivo bloqueado

Editar sección

Somnying se sobrescribe la lógica, pero no sé qué!

Digamos que ha bloqueado un tipo de filetipo como ASP en SharePoint Central Admin.

Ahora vaya a la URL y retire de la extensión .aspx para que sea .asp

muestra una página HTML con el error del título y dice:

Los siguientes archivos han sido bloqueados por el administrador: /portal/default.asp

Está tomando esa página de HTM de 12hive ubicada en /_layouts/1033/RORROR.HTM,

Me gustaría redirigir a una página personalizada, pero no puedo saber dónde se llama ese error.htm para que pueda sobrescribirlo para que vaya a una página de error personalizada.

He usado lo siguiente para redireccionar, pero no funciona:

HttpContext.Current.Server.ClearError();
HttpContext.Current.Response.Clear();
strCustomAcssDndURL = getAppSettingsValue(m_SiteCollCustError + "-" + strSiteURL);
HttpContext.Current.Response.Redirect(strCustomAcssDndURL, false);

pero se rompe:

HttpContext.Current.Response.Redirect();

Se lanza un error:

no se puede redireccionar después de que se hayan enviado encabezados HTTP.

¡Estoy un poco confundido en cuanto a qué hacer y si es posible! ¡Para cualquier otro error que obtenga el código anterior funciona perfectamente!

Cualquier ayuda sería enormemente apreciada :)

¿Fue útil?

Solución 3

OK IV se entendió:

int The init i Creé un objeto HTTPPlplication y creó un controlador de eventos llamado:

context.EndRequest += new EventHandler(context_AcessDenied);

Pero este problema fue que estaba enviando el encabezado y no pude captar la solicitud antes, ¡se desplaza!Entonces, lo que hice fue lo siguiente:

context.BeginRequest += new EventHandler(context_BeginRequest);

He creado, entonces, incluso las búsquedas a través de la lista bloqueada para las extensiones de archivos que ingresaría en la URL y, si está en la lista para redirigir a la ubicación correcta:

    private void context_BeginRequest(object sender, EventArgs e)
    {
        HttpApplication httpApp = sender as HttpApplication;
        HttpContext context = httpApp.Context;
        string httpUrl = context.Request.Url.ToString();
        string strCustomAcssDndURL = string.Empty;
        string strSiteURL = string.Empty;

        if (!httpUrl.ToLower().Equals(null) && !httpUrl.ToLower().Contains("/_layouts/"))
        {
            string[] breakURL = httpUrl.Split('.');
            int count = breakURL.Length - 1;
            string extension = breakURL[count].ToString();

            Uri siteUrl = new Uri(httpUrl);
            SPWebApplication webApplication = SPWebApplication.Lookup(siteUrl); ;
            Collection<string> coll = webApplication.BlockedFileExtensions;
            try
            {
                if (coll.Contains(extension))
                {
                    strSiteURL = HttpContext.Current.Request.Url.GetLeftPart(UriPartial.Authority); 
                    HttpContext.Current.Server.ClearError();
                    HttpContext.Current.Response.Clear();
                    strCustomAcssDndURL = getAppSettingsValue(m_SiteCollCustError + "-" + strSiteURL);
                    HttpContext.Current.Response.Redirect(strCustomAcssDndURL, false);
                }
            }
            catch (Exception a)
            {
                //
            }
        }
    }

Mantuve el otro código de manejo de errores dentro del FIETREQUEST, ya que estaba trabajando, ya que debería :).Así que, como no hay artículos en línea, así que, en este tema, incluso en MSDN, se parece a la primera solución a este problema :) y espero que ayude a otros que puedan venir a acallar este problema :)

Otros consejos

Definición de una página de error personalizada se realiza en la web.config de su sitio de SharePoint.

Si está intentando redirigir en una página, intente redirigir sin el 'httpcontext.current'

En lugar de configurar esto en web.config, ¿por qué no usa el modelo de objeto SharePoint para esto?

Aquí hay un script PowerShell que he usado en el pasado para configurar una página de error personalizada:

2007:

$webapp = [Microsoft.SharePoint.Administration.SPWebApplication]::Lookup("http://thewebapp")
$webapp.UpdateMappedPage([Microsoft.SharePoint.Administration.SPWebApplication+SPCustomPage]::Error, "/_layouts/yourerrorpage.html")
$webapp.Update($true)

2010:

$webapp = Get-SPWebApplication "http://thewebapp"
$webapp.UpdateMappedPage([Microsoft.SharePoint.Administration.SPWebApplication+SPCustomPage]::Error, "/_layouts/yourerrorpage.html")
$webapp.Update($true)

Puede establecer diferentes tipos de errores de esta manera usando SPWebApplication.SPCustomPage enum .Simplemente cambie la parte de la segunda línea (como "::Error") para representar el enumeración apropiado.

Licenciado bajo: CC-BY-SA con atribución
scroll top