Вы можете унаследовать файл Global.asax от базового класса. Так что ваш global.asax может выглядеть так:
<%@ Application Codebehind="Global.asax.cs" Inherits="MyApplication" Language="C#" %>
Тогда ваш Global.asax.cs будет выглядеть примерно так:
public class MyApplication: BaseApplication
{
protected void Application_Start()
{
// application specific code... if any
}
}
В вашей библиотеке определите:
public class BaseApplication : System.Web.HttpApplication
{
protected void Application_Start()
{
// do your shared code here
base.Application_Start();
}
}
Что касается вашей "глобальной" страницы ошибок, то я бы создал страницу обработчика (.ashx) на каждом веб-сайте, а затем создал библиотечный метод для отображения информации об ошибках. Примерно так (Error.ashx)
<%@ WebHandler Language="C#" Class="errorhandler" %>
public class errorhandler: IHttpHandler {
public void ProcessRequest (HttpContext context) {
MyLibrary.ErrorHandler(context);
}
}
Примечание: пространства имен не включены в пример для ясности.