Вопрос

Я застрял, и мне нужен кто-то, кто знает sharepoint досконально!

Редактировать

Это не так, не для других ошибок, таких как 404, 403 и т.д., эта ошибка - что-то еще!это отображается только тогда, когда у вас заблокирован тип файла в центре администрирования, и вы переходите к этому заблокированному расширению по URL, например https://site.mysite.com/portal/default.asp, расширение asp является заблокированным типом файлов!затем он покажет вам только страницу error.htm!если бы это был default.aspx, он работал бы как обычно, потому что aspx нет в списке заблокированных типов файлов

ОКОНЧАТЕЛЬНАЯ ПРАВКА

что-то перезаписывает логику, но я не знаю, что именно!

Допустим, вы заблокировали такой тип файла, как asp, в центре администрирования sharepoint.

Теперь вы переходите по URL-адресу и удаляете из расширения .aspx, чтобы оно было .asp

Он показывает html-страницу с ошибкой заголовка и говорит:

Следующие файлы были заблокированы администратором:/портал/default.asp

Он берет эту htm-страницу из 12hive, расположенного по адресу /_layouts/1033/error.htm ,

Я хотел бы перенаправить на пользовательскую страницу, но я не могу, и мне нужно знать, где это error.htm вызывается, чтобы я мог перезаписать его, чтобы вместо этого он переходил на пользовательскую страницу error.aspx!

Я использовал следующее для перенаправления, но это не работает:

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

но это разбивается о:

HttpContext.Current.Response.Redirect();

Это выдает ошибку:

Невозможно перенаправить после отправки HTTP-заголовков.

Я немного растерян относительно того, что делать и возможно ли это вообще!Для любой другой ошибки, которую я получаю, приведенный выше код работает отлично!

Любая помощь была бы высоко оценена :)

Это было полезно?

Решение 3

ОК IV понять это:

INT ININE I создал объект htthapplication и создал обработчик события:

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

Но этот вопрос был отправлен заголовозу, и я не смог поймать запрос, потому что он отправляется!Так что я сделал, было следующим:

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

Я тогда создал даже, что ищет сквозь заблокированный список для файловых программ, которые вы входите в URL-адрес, и если его в списке перенаправляются в правильное местоположение:

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

Я сохранил другой код обработки ошибок в рамках EndRequest, так как он работал так, как он должен :).Поэтому, как нет статей онлайн Что так когда-либо на эту тему даже на MSDN выглядит как первое решение этой проблемы :) и надеюсь, что это поможет другим, что может прийти в этот вопрос :)

Другие советы

Определение пользовательской страницы ошибки выполняется в Web.config вашего сайта SharePoint.

Если вы пытаетесь перенаправить на странице, попробуйте перенаправить без «httpContext.current»

Вместо того чтобы устанавливать это в web.config, почему бы вам не использовать для этого объектную модель SharePoint?

Вот скрипт PowerShell, который я использовал в прошлом для настройки пользовательской страницы ошибок:

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)

Таким образом, вы можете установить различные типы ошибок, используя SPWebApplication.SPCustomPage перечисление.Просто измените часть второй строки (например, "::Error") для представления соответствующего перечисления.

Лицензировано под: CC-BY-SA с атрибуция
Не связан с sharepoint.stackexchange
scroll top