Shared Global.asax & Error.aspx files

坚强是说给别人听的谎言 提交于 2020-01-04 09:28:24

问题


I have several ASP.NET websites in a solution along with a common C# code project. Something as follows:

  • Website1
  • Website2
  • ...
  • Website(n)
  • Common

First off I want to use a Global.asax file to log all unhandled exceptions. I could have one Global.aspx file per website but all the code will be the same and it seems pointless having to keep multiple copies of the same file upto date. Is there a way to have the Global.aspx file in the Common library and then link to it from each website. I have tried doing Add Exiting Item > Add as Link but it doesn't get run by the page.

Secondly all the websites need an Error page which I can write information to (not just a simple html page) so I have an Error.aspx page which I want to redirect to along with the error details. Again I could have one per website, but its going to be the same page. Is there a way I can store this in the Common project and link to it? The only solution so far for this I can think of is to have an Error website which has the Error page in it.


回答1:


You can inherit your Global.asax file from a base class. So your global.asax might look like this:

<%@ Application Codebehind="Global.asax.cs" Inherits="MyApplication" Language="C#" %>

Then your Global.asax.cs would look something like this:

public class MyApplication: BaseApplication 
{
    protected void Application_Start()
    {
        // application specific code... if any
    }
}

In your library define:

public class BaseApplication : System.Web.HttpApplication
{
    protected void Application_Start()
    {
        // do your shared code here
        base.Application_Start();
    }
}

As far as your "global" error page is concerned, what I would do is create a handler (.ashx) page on each website and then make a library method to display your error information. Something like this (Error.ashx)

<%@ WebHandler Language="C#" Class="errorhandler" %>

public class errorhandler: IHttpHandler {

    public void ProcessRequest (HttpContext context) {
        MyLibrary.ErrorHandler(context);
    }
}

Note: Namespaces not included in example for clarity.



来源:https://stackoverflow.com/questions/2380660/shared-global-asax-error-aspx-files

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!