0

ローカルマシンでWebApplicationを作成しました。それはうまくいきます。しかし、このプロジェクトをIISに展開すると、問題が発生します。
私は悪いことをしていることを理解していますが、ControllerInstaller私はこれを書いています:

container.Register(       
          Classes
         .FromAssembly(Assembly
         .LoadFrom(@"D:\Shevtsov\HarbaHabr\Habra.Web\bin\Habra.Web.dll"))
         .BasedOn<IController>()
         .LifestyleTransient());

サーバー上のこのパスが機能しないことは明らかです...
ここにどのパスを書き込む必要があるか教えてください。

ControllerInstallerアセンブリ内のPS Habra.ServiceLocation

4

2 に答える 2

2

で示される Web アプリケーションのルートから始まる相対パスを指定すると、サーバー上のファイルへの絶対パスを返すMapPathメソッドを使用できます~/

container
    .Register(       
        Classes
            .FromAssembly(
                Assembly
                    .LoadFrom(HostingEnvironment.MapPath("~/bin/Habra.Web.dll"))
            )
            .BasedOn<IController>()
            .LifestyleTransient()
    );
于 2012-05-22T15:42:22.487 に答える
0

MVC 4(またはそれ以降)を使用している場合は、PreApplicationStartMethodAttributeHara.Webを使用してから、アセンブリに以下のようにクラスを作成することをお勧めします。

[assembly: PreApplicationStartMethod(typeof(Registration), "Register")]

public class Registration
{
   public static void Register()
   {
     var container = ...;
     container.Register(       
       Classes
       .FromAssembly(Assembly.GetExecutingAssembly())
       .BasedOn<IController>()
       .LifestyleTransient());
   }
}

Phill Hacckには、この属性の使用に関する非常に優れたブログ投稿があります

于 2012-05-22T15:47:51.890 に答える