。NET 4.5に変換したWebサイトプロジェクトがあります。 App_Startディレクトリに追加したAuthConfigを使用したいと思います。いくつかの質問。
App_StartディレクトリはWebアプリケーションプロジェクトでのみ使用できますか?、既存のasp.netフォルダーを追加しようとすると、追加するオプションとして表示されません。
第二に、もしそうなら私のウェブサイトプロジェクトのどこにでもAuthConfigファイルだけでいいですか?
App_Startフォルダーは、MVC4テンプレートの一部として導入されました。慣例によりコードが実行される原因となる特別なものはありません。たとえば、HotTowel SPAテンプレートは、App_Startフォルダーに次を作成します。
App_Startのコードは、以下に示すようにglobal.asax.csによって実行されます。
protected void Application_Start()
{
AreaRegistration.RegisterAllAreas();
WebApiConfig.Register(GlobalConfiguration.Configuration);
FilterConfig.RegisterGlobalFilters(GlobalFilters.Filters);
RouteConfig.RegisterRoutes(RouteTable.Routes);
BundleConfig.RegisterBundles(BundleTable.Bundles);
AuthConfig.RegisterAuth();
}
App_Startについて特別なことはありません。これは単なるフォルダーです。特別なのは、それがどのように使用されるかであり、それはインストール可能なNuGetパッケージであるWebActivatorフレームワークに固有のものです。 App_StartとWebActivatorは.NET 4.5に固有のものではありませんが、.net 4(VS 2010または2012を意味します)が必要です
http://blog.davidebbo.com/2011/02/appstart-folder-convention-for-nuget.html を参照してください
App_Startについて特別なものはありません ですが、アプリケーションがApplication_Start
内部Global.asax
。私は私のプロジェクトで Ninject 依存関係インジェクターを使用していますApp_Start
フォルダ。私のプロジェクトにはGlobal.asaxファイルがありません:
ただし、NinjectWebCommon
ファイルに設定したすべての構成は、アプリケーションの起動時に実行されます。 NinjectWebCommon
のコンテンツは次のとおりです。
using WebFormNinject.Models;
[Assembly: WebActivator.PreApplicationStartMethod(typeof(WebFormNinject.App_Start.NinjectWebCommon), "Start")]
[Assembly: WebActivator.ApplicationShutdownMethodAttribute(typeof(WebFormNinject.App_Start.NinjectWebCommon), "Stop")]
namespace WebFormNinject.App_Start
{
using System;
using System.Web;
using Microsoft.Web.Infrastructure.DynamicModuleHelper;
using Ninject;
using Ninject.Web.Common;
public static class NinjectWebCommon
{
private static readonly Bootstrapper bootstrapper = new Bootstrapper();
/// <summary>
/// Starts the application
/// </summary>
public static void Start()
{
DynamicModuleUtility.RegisterModule(typeof(OnePerRequestHttpModule));
DynamicModuleUtility.RegisterModule(typeof(NinjectHttpModule));
bootstrapper.Initialize(CreateKernel);
}
/// <summary>
/// Stops the application.
/// </summary>
public static void Stop()
{
bootstrapper.ShutDown();
}
/// <summary>
/// Creates the kernel that will manage your application.
/// </summary>
/// <returns>The created kernel.</returns>
private static IKernel CreateKernel()
{
var kernel = new StandardKernel();
kernel.Bind<Func<IKernel>>().ToMethod(ctx => () => new Bootstrapper().Kernel);
kernel.Bind<IHttpModule>().To<HttpApplicationInitializationHttpModule>();
RegisterServices(kernel);
return kernel;
}
/// <summary>
/// Load your modules or register your services here!
/// </summary>
/// <param name="kernel">The kernel.</param>
private static void RegisterServices(IKernel kernel)
{
kernel.Bind<IDisplay>().To<MockDisplay>();
}
}
}
RegisterServices
関数が実行される場所に興味がありました!次に、このコードのセクションに気付きました:
[Assembly: WebActivator.PreApplicationStartMethod(typeof(WebFormNinject.App_Start.NinjectWebCommon), "Start")]
[Assembly: WebActivator.ApplicationShutdownMethodAttribute(typeof(WebFormNinject.App_Start.NinjectWebCommon), "Stop")]
これらの属性により、Start
メソッドがアプリケーションの起動時に実行されます。詳細については、 WebActivator/PreApplicationStartMethod をご覧ください。
要するに:ASP.NET 4.5 Webサイトの構成の変更をより深く理解するには、次の公式ソースを参照してください- ASPの構成の変更.NET 4.5 Webサイトテンプレート 。
ASP.NET Webサイトの新しいバージョン(4.5)で発生した各変更について説明します
新しいMVC 5テンプレートでルーティングマップを構成する場合は、ConfigureメソッドでStartup.csファイルにルートを設定できます