2012-05-22 3 views
0

로컬 컴퓨터에 WebApplication을 만들었습니다. 그것은 잘 작동합니다. 그러나이 프로젝트를 IIS에 배포 할 때 문제가 있습니다.
내가 나쁜 일을 이해하지만 ControllerInstaller에 나는이 쓰기 :iis에서 어셈블리로드

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

서버에서이 경로가 작동하지 않을 것이 분명하다 ...
내가해야 경로를 작성하는 방법, 알려주세요 이리?

P. ControllerInstaller은 조립품에 Habra.ServiceLocation입니다.

+0

어떤 버전의 MVC를 사용하고 있습니까? –

+0

'ControllerInstaller' 란 무엇입니까? 사용중인 * IOC 컨테이너에 * 표시하십시오. –

+0

MVC 3 CastleWindsor – LuckSound

답변

2

당신은 ~/로 표시 웹 응용 프로그램의 루트에서 시작하는 상대 경로 지정한 서버에있는 파일의 절대 경로를 반환 MapPath 방법을 사용할 수 있습니다

container 
    .Register(  
     Classes 
      .FromAssembly(
       Assembly 
        .LoadFrom(HostingEnvironment.MapPath("~/bin/Habra.Web.dll")) 
      ) 
      .BasedOn<IController>() 
      .LifestyleTransient() 
    ); 
+0

정말 고마워요.) – LuckSound

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()); 
    } 
} 

필 Hacck이 속성을 사용하는 방법에 대한 아주 좋은 블로그 게시물이 있습니다 here.

관련 문제