我有一个类应该在应用程序启动时运行。我不想直接从Application_Start事件中调用此方法。实现这个类的最佳方法是什么,在application_start上运行方法?
换句话说,我想将此代码注入应用程序启动。
答案 0 :(得分:3)
我注意到有些人使用WebActivatorEx.PostApplicationStartMethod。我没有仔细研究细节,但这是我看的第一个地方。这是注册为在调用RegisterBundles时自动运行的类的示例。其中一个钩子可能就是你要找的东西。
[assembly: WebActivatorEx.PostApplicationStartMethod(typeof(BootstrapBundleConfig), "RegisterBundles")]
namespace Deloitte.EmploymentMemo.Presentation.App_Start
{
public class BootstrapBundleConfig
{
public static void RegisterBundles()
{
// Add @Styles.Render("~/Content/bootstrap") in the <head/> of your _Layout.cshtml view
// For Bootstrap theme add @Styles.Render("~/Content/bootstrap-theme") in the <head/> of your _Layout.cshtml view
// Add @Scripts.Render("~/bundles/bootstrap") after jQuery in your _Layout.cshtml view
// When <compilation debug="true" />, MVC4 will render the full readable version. When set to <compilation debug="false" />, the minified version will be rendered automatically
BundleTable.Bundles.Add(new ScriptBundle("~/bundles/bootstrap").Include("~/Scripts/bootstrap.js"));
BundleTable.Bundles.Add(new StyleBundle("~/Content/bootstrap").Include("~/Content/bootstrap.css"));
BundleTable.Bundles.Add(new StyleBundle("~/Content/bootstrap-theme").Include("~/Content/bootstrap-theme.css"));
}
}
}
答案 1 :(得分:2)
使用OWIN启动的可能解决方案之一。
安装nuget包:install-package Microsoft.Owin.Host.SystemWeb
添加到appsettings启动类:
<appSettings>
<add key="owin:appStartup" value="MyProject.Code.Startup" />
</appSettings>
按照惯例,您需要使用名为Configuration的方法的类:
public class Startup
{
public void Configuration(IAppBuilder app)
{
app.Run(context =>
{
string t = DateTime.Now.Millisecond.ToString();
return context.Response.WriteAsync(t + " Production OWIN App");
});
}
}
或做任何你需要的事情。
如果您对它感兴趣,请检查它是否为asp.net:OWIN and Katana project
答案 2 :(得分:-1)
使用代表。它们包含对方法的引用,并且可以同时调用某些方法; 使用委托的一个例子:
public delegate void myDelegate();
private static void Main()
{
myDelegate myFunctions = Method1; //initialize delegate with Method1
myFunctions += Method2; //Add Method2 to delegate
myFunctions(); //call all methods added to delegate
}
public static void Method1()
{
Console.WriteLine("Hello from method1");
}
public static void Method2( )
{
Console.WriteLine("Hello from method2");
}
这将同时调用Method1和Method2