Domanda

Sono bloccato e ho bisogno di qualcuno che conosca SharePoint Inteth!

Modifica

Non è, non per altri errori come 404, 403 ect, questo errore è qualcosa altro! Mostra solo quando si dispone di un tipo di file bloccato nell'amministratore centrale e tu vai a quella estensione bloccata da URL come https://site.mysite.com/portal/default.asp , l'estensione ASP è un tipo di file bloccato! Verrà quindi visualizzato solo la pagina Error.htm! Se fosse default.aspx, funzionerebbe come NORMAL BACHASE ASPX non è nell'elenco Tipo di file bloccato

End Modifica

Qualcosa sta sovrascrivendo la logica ma non so cosa!

Dì che hai bloccato un file filetype come ASP in SharePoint Central Admin.

Ora vai sull'URL e togli dall'estensione .aspx in modo che sia .sp

Mostra una pagina HTML con l'errore del titolo e dice:

.

I seguenti file sono stati bloccati dall'amministratore: /Portal/default.asp

Sta prendendo quella pagina HTM da 12Hive Situato a /_Layouts/1033/error.htm,

Vorrei reindirizzare a una pagina personalizzata ma non posso sapere dove viene chiamato Error.htm, quindi posso sovrascriverlo in modo che vada in una pagina Errore personalizzato.

Ho usato quanto segue per reindirizzare ma non funziona:

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

Ma si rompe:

HttpContext.Current.Response.Redirect();
.

Getta un errore:

.

Impossibile reindirizzare dopo che le intestazioni HTTP sono state inviate.

Sono un po 'confuso su cosa fare e se è anche possibile! Per qualsiasi altro errore che ottengo il codice sopra funziona perfettamente!

Qualsiasi aiuto sarebbe molto appropriato :)

È stato utile?

Soluzione 3

OK IV ha capito:

Int L'init ho creato un oggetto httpplication e creato un gestore di eventi chiamato:

context.EndRequest += new EventHandler(context_AcessDenied);
.

Ma questo problema è stato inviare l'intestazione e non sono stato in grado di catturare la richiesta prima che venga inviata!Quindi quello che ho fatto è stato il seguente:

context.BeginRequest += new EventHandler(context_BeginRequest);
.

Ho quindi creato anche il che cerca attraverso l'elenco bloccato per estensioni di file che entrerebbe nell'URL e se è nell'elenco per reindirizzare la posizione giusta:

    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)
            {
                //
            }
        }
    }
.

Ho mantenuto l'altro codice di gestione degli errori all'interno del Endrequest come funzionava come dovrebbe :).Quindi, in quanto non ci sono articoli online ciò che è mai su questo argomento anche su MSDN, sembra la prima soluzione a questo problema :) e spero che aiuti gli altri che potrebbero arrivare questo problema :)

Altri suggerimenti

Definizione di una pagina di errore personalizzata viene eseguita nel Web.config del tuo sito di SharePoint.

Se stai cercando di reindirizzare in una pagina prova a reindirizzare senza il 'httpContext.current'

Invece di impostare questo in Web.config, perché non usi il modello oggetto SharePoint per questo?

Ecco uno script PowerShell che ho usato in passato per impostare una pagina di errore personalizzata:

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)
.

È possibile impostare diversi tipi di errori in questo modo utilizzando il SPWebApplication.SPCustomPage Enum .Basta cambiare la parte della seconda riga (come "::Error") per rappresentare l'enum appropriato.

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a sharepoint.stackexchange
scroll top