在汇编中嵌入Global.asax

在汇编中嵌入Global.asax

问题描述:

是否可以将Global.asax文件嵌入到程序集中?目前它在Web根目录中表示为一个文件。但是我想将它作为资源存储在程序集中。在汇编中嵌入Global.asax

+0

只是出于好奇,为什么这需要?后面的代码会自动包含在Web App组件中。谢谢。 – Alexei

+0

目前正致力于将Ironpython和asp.net mvc结合在一起。事情进展得很顺利,但我只想分发一个dll,并且没有'global.asax'。 – BendEg

我不确定。您是否尝试将生成操作设置为嵌入式资源?你可以通过选择global.asax文件来做到这一点,然后该选项应该出现在你的属性窗口中。

Ali Reza Dehdar的答案是正确的(只是改变CompileEmbedded Resource在文件的属性)和结果可以使用反编译器可以看出:

enter image description here

当然可以。据我所知,你有三个选项:

  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()

希望帮助:)