사이트의 초기 배포가 정상적으로 작동합니다. 약 2-3 시간 후, 컨트롤러는 갑자기 의존성을 해결할 수 없기 때문에 인스턴스화 할 수 없습니다 (또는 적어도 오류 메시지가 알려주는 것입니다).간헐적으로 "인터페이스를 구성 할 수 없습니다. 유형 매핑이 누락 되었습니까?"
나는 여러 가지를 시도했지만 어느 것도 해결하지 못하는 것 같습니다. 누구든지 내가 확인할 수있는 아이디어가 있습니까?
사이트의 초기 배포가 정상적으로 작동합니다. 약 2-3 시간 후, 컨트롤러는 갑자기 의존성을 해결할 수 없기 때문에 인스턴스화 할 수 없습니다 (또는 적어도 오류 메시지가 알려주는 것입니다).간헐적으로 "인터페이스를 구성 할 수 없습니다. 유형 매핑이 누락 되었습니까?"
나는 여러 가지를 시도했지만 어느 것도 해결하지 못하는 것 같습니다. 누구든지 내가 확인할 수있는 아이디어가 있습니까?
나는 아직도 어떤 일이 일어나고 있는지 전혀 모르지만 나는 그것을 고칠 수 있었다. 제 구성 요소와 매핑을 등록하기 위해 타사 부트 스트랩 링 라이브러리를 사용하고있었습니다. 그러나 MEF와 함께 내 자신을 압연하고 등록을 직접 관리 한 후에 문제는 사라졌습니다. 나는 그것이 없어야 할 때 물건을 버림으로써 뭔가 펑키하고 있다고 생각합니다. 도와 주셔서 감사합니다. 경우 누군가에
는 다음과 같은 선언으로 http://bootstrapper.codeplex.com/를 사용하여이 문제가 발생 : 나는 대체
Bootstrap.Bootstrapper
.With.Unity()
.And.AutoMapper()
.And.ServiceLocator()
.Start();
을 그와 :
IUnityContainer container = new UnityContainer();
MEFContainer mefContainer = new MEFContainer();
mefContainer.UnityRegistry.ForEach(x => x.Register(container));
container.RegisterInstance<IMappingEngine>(Mapper.Engine);
mefContainer.AutoMapperRegistry.ForEach(x => x.CreateMap(Mapper.Configuration));
private class MEFContainer
{
[ImportMany(typeof(IUnityRegistration))]
public List<IUnityRegistration> UnityRegistry { get; set; }
[ImportMany(typeof(IMapCreator))]
public List<IMapCreator> AutoMapperRegistry { get; set; }
public MEFContainer()
{
var catalog = new DirectoryCatalog("bin");
var compositionContainer = new CompositionContainer(catalog);
compositionContainer.ComposeParts(this);
}
}
참고 IUnityRegistration.Register () 및 IMapCreator.CreateMap()은 세 번째 파에서 정의됩니다. 타이 코드. MEF는 System.ComponentModel.Composition, 및 System.ComponentModel.Composition.Hosting을 참조합니다. 결국 리팩터링 할 것입니다.
최근에 우리는 인터셉터 중 하나와 비슷한 상황이었습니다. 갑자기 더 이상 작동하지 않습니다. 어셈블리 X.Y.Z에 정의 된 인터페이스에 대한 모든 호출을 인터셉트합니다. dll. 그러나 OS는 파일 X.Y.Z를 호출하기로 결정했습니다. 잠시 후 DLL. 그 동안에는 새로운 배포가 발생하지 않았습니다. 하지만 갑자기 이름이 일치하지 않았습니다. 구성에 이름으로 어셈블리를로드합니까? 어쩌면 문자열 비교에서 IgnoreCase를 확인해야합니다.
또 다른 아이디어 : 개체에 대해 일종의 캐시를 사용합니까? 또는 캐시 기반 LifetimeManager? 캐시 항목이 잠시 후에 무효화되면 해당 객체를 잃게됩니다.
흠, 그것이 용기 수명 관리자와 관련이 있는지 궁금해합니다. 아마도 폐기 될 것입니다. – Alfred
항상 생성 할 수 없다는 불만과 동일한 인터페이스입니까? Unity가 갑자기 이전에 가지고 있던 인터페이스 구현을 해결하는 능력을 잃어 버리는 것을 볼 수 없습니다. 이것은 오류 메시지가 나타내는 것입니다. –
예, 동일한 인터페이스 – Alfred