는 tldr는 - NServiceBus.Host.exe은NServiceBus 호스트 콘솔
구성 관리자를 사용하여, 나는 내가 프로젝트의 appSettings는 액세스 할 수 없습니다입니다 디버그 모드에서 내의 app.config를 탈취 코드 내에서 호출. 나는 NServiceBus 호스트 nuget 패키지 자체 호스트를 사용하고
, 버전은 4.4.2
namespace EnrollmentService.Reporting
{
public class EndpointConfig : IConfigureThisEndpoint, AsA_Server
{
public EndpointConfig()
{
//TODO: WHAT IS HAPPPEEENNIIINNNGG
var url = ConfigurationManager.AppSettings["configurationKey"];
var config = ConfigurationManager.OpenExeConfiguration("EnrollmentService.Reporting.dll");
var nsbHostConfig = ConfigurationManager.OpenExeConfiguration(ConfigurationUserLevel.None);
}
}
}
변수 'URL'다시 널 (null) 제공됩니다. 변수 'config'는이 응용 프로그램의 구성 컨텍스트로 사용됩니다. 'nsbHostConfig'변수는 응용 프로그램의 실제 구성 컨텍스트입니다.
다시 예상 경로는 "EnrollmentService.Reporting.dll.config"이지만 실제 경로는 "NServiceBus.Host.exe.config"입니다. NServiceBus 구성 파일이 없습니다.
이것은 다른 컴퓨터에서 "* .dll.config"를 사용하여 예상대로 작동하므로 컴퓨터 특정 문제 인 것 같습니다.
코드를 호출하는 실행 파일은 "실행중인"응용 프로그램의 구성이어야하지만 이전에는 예상 된 * .dll.config를 사용하고있었습니다. 또한 NServiceBus는 디버깅 목적으로 호스트가 콘솔 앱으로 실행되지만 배포의 경우 Windows 서비스로 설치되므로 NServiceBus가 구성 컨텍스트를 변경하게됩니다. 개발할 필요가있을 때마다 빈의 설정 파일을 바꿔야 할 필요는 어리석은 일입니다.
내 자체 호스트 응용 프로그램의 운영 컨텍스트가 NServiceBus 실행 파일의 구성을 사용하도록 전환하는 이유는 무엇입니까?
UPDATE : 아래
은, 무슨 일되어야한다,하지만 그것은 NServiceBus 소스 코드를 보면
아니라, 당신의 EndpointType가 지정되지 않은 경우를 app.config에서 EndpointTypeDeterminer.cs는 IConfigureThisEndpoint 유형에 대한 어셈블리 검색을 통해 EndpointType을 찾습니다. 즉, 구성 파일 경로는 다음
귀하의 편집 내용을 이해하지만 귀하의 질문에 대한 대답 여부가 명확하지 않습니다. 유형 결정기가 올바른 어셈블리를 식별하지 못하게하는 엔드 포인트와 다른 점이 있습니까? 근본 원인에 관심이 있습니다. –
그것은 내 질문에 대답하지 않는다. ** 나는 소스 코드에서 어떤 일이 일어나야 하는지를 보았지만, 그 일은 일어나지 않았다. 나는 아직도 더 관련된 정보를 찾고있다. 내일 NServiceBus.Host.exe를 실행 해 보겠습니다. 코드베이스의 여러 끝점에서도 발생하지만 내 컴퓨터에서만 발생합니다. – SpykeBytes
NuGet 패키지로 엔드 포인트와 facades를 분리하고 모 놀리 식 솔루션을 사용하는 대신 이들을 소비하는 것을 노리고 있습니다. 이것은 이것과 관련이있을 수 있습니다. – SpykeBytes