瀏覽標籤:

MVC

[C#][ASP.NET MVC5] 用 Global.asax 的 Application_Error 來記錄 Exception

當網站出錯時有問題卻沒有紀錄怎麼辦?用Application_Error來Hold住全場吧 !!

  • Global.asax
    protected void Application_Error(object sender, EventArgs e)
    {
    	var rawUrl = Request.RawUrl;
    	var ex = Server.GetLastError();
    	Debug.WriteLine("RawUrl: {0}", rawUrl);
    	Debug.WriteLine("Ex: {0}", ex.Message);
    	Debug.WriteLine("StackTrace: {0}", ex.StackTrace);
    
    	//若網頁沒有撰寫任何的錯誤處理,或是沒有回收清除(Server.ClearError),最後將顯示預設錯誤畫面;反之若有清除則不再往下一個除錯流程。
    	Server.ClearError();
    
    	//導回首頁
    	Response.Redirect("/");
    }

轉載:[ASP.NET] 追蹤與除錯 / Trace and Debug (二)

       

[C#][ASP.NET MVC5][Autofac] DI Framework – AutofacConfig.cs

之前嘗試很多次都失敗,這次終於成功註冊Controller、Service與Repository了,來記錄一下設定檔。

  • AutofacConfig.cs
    /// <summary>
    /// DI設定檔
    /// </summary>
    public class AutofacConfig
    {
    	/// <summary>
    	/// 註冊DI注入物件資料
    	/// </summary>
    	public static void Register()
    	{
    		// 容器建立者
    		ContainerBuilder builder = new ContainerBuilder();
    
    		// 註冊Controllers
    		builder.RegisterControllers(Assembly.GetExecutingAssembly());
    
    		// 註冊Service
    		builder.RegisterAssemblyTypes(Assembly.GetExecutingAssembly())
    			   .Where(t => t.Name.EndsWith("Service"))
    			   .AsSelf();
    
    		// 註冊Repository
    		builder.RegisterAssemblyTypes(Assembly.GetExecutingAssembly())
    			   .Where(t => t.Name.EndsWith("Repository"))
    			   .AsSelf();
    
    		// 建立容器
    		IContainer container = builder.Build();
    
    		// 解析容器內的型別
    		AutofacDependencyResolver resolver = new AutofacDependencyResolver(container);
    
    		// 建立相依解析器
    		DependencyResolver.SetResolver(resolver);
    	}
    }
  • Global.asax
    protected void Application_Start()
    {
        //加入這行
        AutofacConfig.Register();
    }