2016-02-13 89 views
1

是否可以將Global.asax文件嵌入到程序集中?目前它在Web根目錄中表示爲一個文件。但是我想將它作爲資源存儲在程序集中。在彙編中嵌入Global.asax

+0

只是出於好奇,爲什麼這需要?後面的代碼會自動包含在Web App組件中。謝謝。 – Alexei

+0

目前正致力於將Ironpython和asp.net mvc結合在一起。事情進展得很順利,但我只想分發一個dll,並且沒有'global.asax'。 – BendEg

回答

2

我不確定。您是否嘗試將生成操作設置爲嵌入式資源?你可以通過選擇global.asax文件來做到這一點,然後該選項應該出現在你的屬性窗口中。

1

Ali Reza Dehdar的答案是正確的(只是改變CompileEmbedded Resource在文件的屬性)和結果可以使用反編譯器可以看出:

enter image description here

1

當然可以。據我所知,你有三個選項:

  1. 使用HttpModule,但請注意,它有一些棘手的部分。例如,HTTP模塊初始化方法可能會被多次觸發(這是基於應用程序池的應用程序實例的數量)
  2. 使用OWIN
  3. 交替的HttpApplication類型 - 這一個最適合我,但我沒有在太多的不同情況和框架版本中測試它。您需要在組裝中做的唯一一件事就是粘貼以下內容:

using System.Web; 
using System.Web.UI; 

[assembly: PreApplicationStartMethod(typeof(MyAssembly.MyHttpApplication), nameof(MyAssembly.MyHttpApplication.Application_Register)] 
namespace MyAssembly 
{ 
    public class MyHttpApplication : HttpApplication 
    { 
     public static void Application_Register() 
     { 
      PageParser.DefaultApplicationBaseType = typeof(MyHttpApplication); 
     } 

     protected void Application_Start() 
     { 
      // TODO: Your application startup magic :) 
     } 

     protected void Application_BeginRequest(object sender, EventArgs e) 
     { 
      // TODO: 
     } 
    } 
} 

跟蹤(或類似的東西):

  1. System.Web.UI.PageParser.DefaultApplicationBaseType
  2. System.Web.Compilation.BuildManager.GetGlobalAsaxType()
  3. 的System.Web .HttpApplicationFactory.CompileApplication()

希望幫助:)