We can create a Feature Receiver were we can use the UpdateMappedPage method to define a custom access denied page.
Similarly, we can create custom pages for various events as shown in the below links: http://www.spdeveloper.co.in/articles/pages/custom-error-pages-for-sharepoint2010-sites.aspx
public
class
SPEventReceiver : SPFeatureReceiver
{
Const
string
AccessDeniedPage =
"/_layouts/Pages/AccessDenied.aspx"
;
public
override
void
FeatureActivated(SPFeatureReceiverProperties properties)
{
SPWebApplication webapp = properties.Feature.Parent
as
SPWebApplication;
if
(webapp !=
null
)
{
if
(!webapp.UpdateMappedPage(SPWebApplication.SPCustomPage.AccessDenied, AccessDeniedPage)
{
throw
new
ApplicationException(
"Cannot create the new Access Denied Page Mappings."
);
}
webapp.Update(
true
);
}
}
public
override
void
FeatureDeactivating(SPFeatureReceiverProperties properties)
{
SPWebApplication webapp = properties.Feature.Parent
as
SPWebApplication;
if
(webapp !=
null
)
{
if
(!webapp.UpdateMappedPage(SPWebApplication.SPCustomPage.AccessDenied,
null
))
{
throw
new
ApplicationException(
"Cannot reset the default Access Denied Page Mappings."
);
}
webapp.Update(
true
);
}
}
}