2016-02-13 3 views
1

Возможно ли вставить файл Global.asax в сборку? В настоящее время он представлен как файл в корневом каталоге сети. Но я хочу сохранить его как ресурс в сборке.Код вставки в каталог.

+0

Просто из любопытства, зачем это нужно? Код позади автоматически включается в сборку Web App. Благодарю. – Alexei

+0

В настоящее время работает над приведением ironpython и asp.net mvc вместе. Все идет неплохо, но я хочу распространять только одну DLL, а не 'global.asax' с ней. – BendEg

ответ

2

Я не уверен. Вы пытались настроить Build Action на Embedded Resource? Вы можете сделать это, выбирая файл global.asax, а затем этот параметр должен появиться в вашем окне свойств. Ответ

1

Ali Reza Dehdar корректен (просто изменить Compile к Embedded Resource в свойствах файла), и результат можно увидеть с помощью декомпилятора:

enter image description here

1

Да вы можете. У вас есть три варианта, насколько мне известно:

  1. Используйте HttpModule, но имейте в виду, что в нем есть несколько сложных деталей. Например, метод HttpModule Init может быть вызван несколько раз (это основано на количестве экземпляров приложения в пуле приложений)
  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()

Надеюсь, что это поможет :)

Смежные вопросы