0

我在本地机器上创建了 WebApplication。它运作良好。但是当我将此项目部署到 IIS 时,我遇到了问题。
我知道这样做不好,但在ControllerInstaller我写下这个:

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

很明显,服务器上的这个路径它不会工作......
请告诉我,我必须在这里写什么路径?

PSControllerInstaller在组装Habra.ServiceLocation

4

2 回答 2

2

您可以使用MapPath方法,该方法返回服务器上文件的绝对路径,给定从 Web 应用程序的根开始的相对路径,由 表示~/

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

如果您使用的是 MVC 4(或更高版本),我建议使用PreApplicationStartMethodAttribute,然后只需在您的程序集中创建一个如下所示的类Hara.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 Hackc 有一篇关于使用此属性的非常好的博客文章

于 2012-05-22T15:47:51.890 回答