Кастомизация страниц с ошибками
Sharepoint ????????? ??????????????? ???????? ? ????????. ?? ???? ???????? ?? ????????? ?????????, ????? ?????????? ?? ???? ??????. ??????? ? ?????? ???????? ??? ????????? ??????? ?? ??????? ?????.
????, ? ??? ???? ????????? ??????????? ?? ???????????? ??????? ? ????????:
- ?? ????? ????????? ???????? ??????? ??? ????????, ?????????????? ??? ????????????? ?????? 404.
- ?? ????? ???????? ??????? ??? ???????? Access Denied, ?? ?????? ? ?????? ????????? ?? ?????? ???????? (master page).
??? ??? ??????? ?
?????? ?? ???????, ?? ???? c? ???????? ??? ?????? 404.
1. ?????????? ?????????? ????????, ??????? ?????????? ????? ???????? ? ????? %CommonProgramFiles%\Microsoft Shared\web server extensions\12\TEMPLATE\LAYOUTS\ ? ????? ?? ??? ????? ???????? ??????????? ??????? ???????????? ? ??? ?? ???????. ? ????? ?????? ?? ????? ?????? ???????? ? ????? %CommonProgramFiles%\Microsoft Shared\web server extensions\12\TEMPLATE\LAYOUTS\1033
???????? ???????? sps404. html ?????????? ??????????:
<html>
<head>
<meta HTTP-EQUIV="Content-Type" content="text/html; charset=utf-8" />
<meta HTTP-EQUIV="Expires" content="0" />
<noscript>
<meta http-equiv="refresh" content="0; url=/_layouts/spsredirect.aspx?noscript=1" />
</noscript>
<script language="javascript" type="text/javascript" src="/_layouts/1049/init.js"></script>
<script language="javascript" type="text/javascript" src="/_layouts/1049/core.js"></script>
<script language="javascript" type="text/javascript">
var requestedUrl = escapeProperly(window.location.href);
STSNavigate("/EN/Pages/404.aspx?oldUrl=" + requestedUrl);
</script>
</head>
<body>
</body>
</html>
? STSNavigate ? ???????? ????????? ???? ??????? ?? ????? ???????? ??? ???? ???????.
2. ???????? ???????? 404. aspx ? ???????? ?? ? ?????????? ??????? ???????.
? ???? ?????????? ????????? ????????:
<%@ Page Language="C#" MasterPageFile="/_catalogs/masterpage/MySimple.master" inherits="Microsoft.SharePoint.WebPartPages.WebPartPage, Microsoft.SharePoint, Version=12.0.0.0, Culture=neutral, PublicKeyToken=71e9bce111e9429c" meta:progid="SharePoint.WebPartPage.Document" %>
<%@ Register Tagprefix="SharePoint" Namespace="Microsoft.SharePoint.WebControls" Assembly="Microsoft.SharePoint, Version=12.0.0.0, Culture=neutral, PublicKeyToken=71e9bce111e9429c" %>
<asp:Content id="Content1" runat="server" contentplaceholderid="PlaceHolderPageTitleInTitleArea">
<SharePoint:EncodedLiteral ID="EncodedLiteral1" runat="server" text="<% $Resources: MySharePoint,myerror_404 %>" EncodeMethod='HtmlEncode'/>
</asp:Content>
<asp:Content id="Content2" runat="server" contentplaceholderid="PlaceHolderPageDescription">
<SharePoint:EncodedLiteral ID="EncodedLiteral2" runat="server" text="<% $Resources:MySharePoint,myerror_404_comment %>" EncodeMethod='HtmlEncode'/>
</asp:Content>
3. ???????? MySimple.master ??????? ??????????? ?? ????? %CommonProgramFiles%\Microsoft Shared\web server extensions\12\TEMPLATE\LAYOUTS\simple.master ? ??????????? ???????? ???? ??? ???? ?????.
? ???? ?????????? ????????? ????????:
<%@ Master Language="C#" %>
<%@ Register TagPrefix="SharePoint" Namespace="Microsoft.SharePoint.WebControls"
Assembly="Microsoft.SharePoint, Version=12.0.0.0, Culture=neutral, PublicKeyToken=71e9bce111e9429c" %>
<%@ Register TagPrefix="Utilities" Namespace="Microsoft.SharePoint.Utilities" Assembly="Microsoft.SharePoint, Version=12.0.0.0, Culture=neutral, PublicKeyToken=71e9bce111e9429c" %>
<%@ Register TagPrefix="MCSSPSS" Namespace="Microsoft.Services.SharePoint.Server.Search"
Assembly="Microsoft.Services.SharePoint.Server.Search, Version=1.0.0.0, Culture=neutral, PublicKeyToken=9f4da00116c38ec5" %>
<%@ Import Namespace="Microsoft.SharePoint" %>
<%@ Import Namespace="Microsoft.SharePoint.ApplicationPages" %>
<html id="HTML1" dir="<%$Resources:wss,multipages_direction_dir_value%>" runat="server">
<head id="HEAD1" runat="server">
<meta name="GENERATOR" content="Microsoft SharePoint">
<meta name="progid" content="SharePoint.WebPartPage.Document">
<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
<meta http-equiv="Expires" content="0">
<meta name="ROBOTS" content="NOHTMLINDEX">
<title id="onetidTitle">
<asp:contentplaceholder id="PlaceHolderPageTitle" runat="server" />
</title>
<SharePoint:CssLink ID="CssLink1" runat="server" Alternate="false" />
<link rel="SHORTCUT ICON" href="/images/favicon.ico">
<SharePoint:ScriptLink ID="ScriptLink1" Language="javascript" Name="core.js" runat="server" />
<asp:contentplaceholder id="PlaceHolderAdditionalPageHead" runat="server" />
</head>
<body scroll="yes" onload="javascript:if (typeof(_spBodyOnLoadWrapper) != 'undefined') _spBodyOnLoadWrapper();">
<form id="Form1" runat="server" onsubmit="return _spFormOnSubmitWrapper();">
<div class="als_outer_width">
<div class="als_outer_padding">
<div class="als_full_width">
<!-- START: Header -->
<div class="als_hat_spacer">
</div>
<table class="als_layout" id="als_main">
<tr>
<td class="als_layout als_left">
</td>
<!-- START: Content column -->
<td class="als_layout als_right">
<div id="als_logo">
<a href='<SharePoint:EncodedLiteral runat="server" Text="<%$Resources:MySharePoint, myportal_error_logo_url %>"
EncodeMethod="HtmlEncode" />'><img src='<SharePoint:EncodedLiteral runat="server" Text="<%$Resources:MySharePoint, myportal_logo_simple %>"
EncodeMethod="HtmlEncode" />' /></a>
</div>
<div id="als_header" class="als_error_header">
<h1 class="als_common">
<asp:ContentPlaceHolder ID="PlaceHolderPageTitleInTitleArea" runat="server" />
</h1>
</div>
<div class="als_content als_error_content">
<div class="als_content_marginer">
<p class="als_common">
<asp:ContentPlaceHolder ID="PlaceHolderPageDescription" runat="server" />
</p>
<p class="als_common">
<asp:ContentPlaceHolder ID="PlaceHolderMain" runat="server">
</asp:ContentPlaceHolder>
</p>
<p class="als_common">
<SharePoint:ReturnLink Text="<% $Resources:TnkBpSharePoint,tnkbperror_home %>" ID="ReturnLink1"
runat="server" />
</p>
</div>
</div>
</td>
<!-- END: Content column -->
</tr>
</table>
<!-- END: Main area -->
</div>
</div>
</div>
<div style="display: none">
<asp:ContentPlaceHolder ID="PlaceHolderGlobalNavigation" runat="server">
</asp:ContentPlaceHolder>
<asp:ContentPlaceHolder ID="PlaceHolderSiteName" runat="server">
</asp:ContentPlaceHolder>
<asp:ContentPlaceHolder ID="PlaceHolderSearchArea" runat="server">
</asp:ContentPlaceHolder>
<asp:ContentPlaceHolder ID="PlaceHolderTopNavBar" runat="server">
</asp:ContentPlaceHolder>
<asp:ContentPlaceHolder ID="WSSDesignConsole" runat="server">
</asp:ContentPlaceHolder>
<asp:ContentPlaceHolder ID="SPNavigation" runat="server">
</asp:ContentPlaceHolder>
<asp:ContentPlaceHolder ID="PlaceHolderPageImage" runat="server" />
<asp:ContentPlaceHolder ID="PlaceHolderTitleLeftBorder" runat="server">
</asp:ContentPlaceHolder>
<asp:ContentPlaceHolder ID="PlaceHolderTitleAreaClass" runat="server">
ms-areaseparator</asp:ContentPlaceHolder>
<asp:ContentPlaceHolder ID="PlaceHolderTitleBreadcrumb" runat="server">
<SharePoint:ReturnLink Text="<%$Resources:wss,multipages_back_to_site%>" ID="idSimpleGoBackToHome"
runat="server" />
</asp:ContentPlaceHolder>
<asp:ContentPlaceHolder ID="PlaceHolderMiniConsole" runat="server" />
<asp:ContentPlaceHolder ID="PlaceHolderTitleRightMargin" runat="server">
</asp:ContentPlaceHolder>
<asp:ContentPlaceHolder ID="PlaceHolderTitleAreaSeparator" runat="server" />
<asp:ContentPlaceHolder ID="PlaceHolderLeftNavBarDataSource" runat="server" />
<asp:ContentPlaceHolder ID="PlaceHolderCalendarNavigator" runat="server" />
<asp:ContentPlaceHolder ID="PlaceHolderLeftNavBarTop" runat="server" />
<asp:ContentPlaceHolder ID="PlaceHolderLeftNavBar" runat="server">
</asp:ContentPlaceHolder>
<asp:ContentPlaceHolder ID="PlaceHolderLeftActions" runat="server">
</asp:ContentPlaceHolder>
<asp:ContentPlaceHolder ID="PlaceHolderNavSpacer" runat="server">
</asp:ContentPlaceHolder>
<asp:ContentPlaceHolder ID="PlaceHolderLeftNavBarBorder" runat="server">
</asp:ContentPlaceHolder>
<asp:ContentPlaceHolder ID="PlaceHolderBodyLeftBorder" runat="server">
</asp:ContentPlaceHolder>
<asp:ContentPlaceHolder ID="PlaceHolderBodyAreaClass" runat="server">
ms-formareaframe</asp:ContentPlaceHolder>
<asp:ContentPlaceHolder ID="PlaceHolderPageDescriptionRowAttr" runat="server" />
<asp:ContentPlaceHolder ID="PlaceHolderPageDescriptionRowAttr2" runat="server" />
<asp:ContentPlaceHolder ID="PlaceHolderBodyRightMargin" runat="server">
</asp:ContentPlaceHolder>
<asp:ContentPlaceHolder ID="PlaceHolderFormDigest" runat="server">
</asp:ContentPlaceHolder>
</div>
<input type="text" name="__spDummyText1" style="display: none;" size="1" />
<input type="text" name="__spDummyText2" style="display: none;" size="1" />
</form>
<asp:ContentPlaceHolder ID="PlaceHolderUtilityContent" runat="server" />
</body>
</html>
4. ???????? ??????. ?????? ???? ????????? Sharepoint ????????? ??? ????????????? ?????? 404 ???? ????????. ??? ???? ? ??????? SPWebApplication ???? ???????? FileNotFoundPage. ????? ???????? ???????, ??????? ?? url ??????? ????????? ??? ???? ???????? 404. ?????? ??? ???????? ???:
SPWebApplication webApplication = SPWebApplication.Lookup(new Uri(args[0]));
webApplication.FileNotFoundPage = "sps404.html";
webApplication.Update();
C 404 ??????? ?????????.
?????? ??? ???????? Access Denied. ?? ???????? ????? ?????? ??????? masterpage ??? ???? ????????. ???????? ?? ?????? ???????? ? ??? ???????? ??? MySimple.master ????????????? ? ?????????? ???????.
???????? ??? ????????? ???????:
1. ?????????? ??????? HttpModule ? ???????? ??? ????? ????????? ? web.config.
2. ? HttpModule ? ?????? page_PreInit ???????? ?????????:
Page page = sender as Page;
if (page != null)
{
//??? ????? ???????? ??? ?? ????????? ?? ?????? ????????
page.MasterPageFile = "/_catalogs/masterpage/mysimple.master";
}