내가 NServiceBus (및 녹색 개발자)에 새로 온 사람과 나는이 예외에 의해 파괴지고있어합니다 (NSB 콘솔 핸들러를 호출하기 전에) : 내가 가진NServiceBus System.ArgumentNullException
2014-02-26 14:27:10,269 [8] ERROR NServiceBus.Unicast.Transport.TransportReceiver [(null)] <(null)> -
Failed to deserialize message with ID: b0e459fa-0ada-431c-bbee-a2de00ee2a29
System.Runtime.Serialization.SerializationException: An error occurred while attempting to extract logical messages
from transport message NServiceBus.TransportMessage ---> System.ArgumentNullException: Value cannot be null.
Parameter name: path
at System.IO.Path.CheckInvalidPathChars(String path, Boolean checkAdditional)
at System.Security.Permissions.FileIOPermission.AddPathList(FileIOPermissionA
ccess access, AccessControlActions control, String[] pathListOrig, Boolean check
ForDuplicates, Boolean needFullPath, Boolean copyPathList)
at System.IO.FileSystemInfo.set_Attributes(FileAttributes value)
at SetIsReadOnly(Object , Object)
at NServiceBus.Serializers.XML.XmlMessageSerializer.GetObjectOfTypeFromNode(T
ype t, XmlNode node) in c:\BuildAgent\work\31f8c64a6e8a2d7c\src\NServiceBus.Core
\Serializers\XML\XmlMessageSerializer.cs:line 492
at NServiceBus.Serializers.XML.XmlMessageSerializer.GetPropertyValue(Type typ
e, XmlNode n) in c:\BuildAgent\work\31f8c64a6e8a2d7c\src\NServiceBus.Core\Serial
izers\XML\XmlMessageSerializer.cs:line 828
at NServiceBus.Serializers.XML.XmlMessageSerializer.GetObjectOfTypeFromNode(T
ype t, XmlNode node) in c:\BuildAgent\work\31f8c64a6e8a2d7c\src\NServiceBus.Core
\Serializers\XML\XmlMessageSerializer.cs:line 487
at NServiceBus.Serializers.XML.XmlMessageSerializer.Process(XmlNode node, Obj
ect parent, Type nodeType) in c:\BuildAgent\work\31f8c64a6e8a2d7c\src\NServiceBu
s.Core\Serializers\XML\XmlMessageSerializer.cs:line 379
at NServiceBus.Serializers.XML.XmlMessageSerializer.Deserialize(Stream stream
, IList`1 messageTypesToDeserialize) in c:\BuildAgent\work\31f8c64a6e8a2d7c\src\
NServiceBus.Core\Serializers\XML\XmlMessageSerializer.cs:line 359
at NServiceBus.Unicast.Messages.ExtractLogicalMessagesBehavior.Extract(Transp
ortMessage physicalMessage) in c:\BuildAgent\work\31f8c64a6e8a2d7c\src\NServiceB
us.Core\Unicast\Messages\ExtractLogicalMessagesBehavior.cs:line 74
at NServiceBus.Unicast.Messages.ExtractLogicalMessagesBehavior.Invoke(Receive
PhysicalMessageContext context, Action next) in c:\BuildAgent\work\31f8c64a6e8a2
d7c\src\NServiceBus.Core\Unicast\Messages\ExtractLogicalMessagesBehavior.cs:line
52
--- End of inner exception stack trace ---
무료 챕터에서 작업 MVC 예제 프로젝트,하지만 '호스트는 여러 종점의 호스팅을 지원하지 않기 때문에 pubsub 예를 얻을 수 없습니다.' 난 그냥 단순한 1 노드 술집과 1 노드 하위가는려고, 내 깨진 솔루션에 3 개 프로젝트에서 일하고 있어요 :
- 코어 (NServiceBus.Interfaces 4.4.1 NuGet에서, 이벤트 폴더가 포함 NuGet에서 NuGet에서 IFileUploadedEvent.cs)
- FileWatcherService (NServiceBus.Host 4.4.1)
- FileMoverService (NServiceBus.Host 4.4.1)와
코어 \ 이벤트 \ IFileUploadedEvent.cs :
,using NServiceBus;
using ...
namespace Core.Events
{ public interface IFileUploadedEvent : IEvent
{ Guid EventId { get; set; }
string Client { get; set; }
FileInfo FileName { get; set; }
}
}
FileWatcherService에는 기본 app.config가 있으며 매핑이 없습니다. FileWatcherService.EndpointConfig.cs :
namespace FileWatcherService
{ using NServiceBus;
public class EndpointConfig : IConfigureThisEndpoint, AsA_Publisher {}
}
FileWatcherService.FileWatcher.cs :
using NServiceBus;
using Core.Events;
using ...
namespace FileWatcherService
{ public class FileWatcher : IWantToRunWhenBusStartsAndStops
{ public IBus Bus { get; set; }
public void Activate()
{ ... }
...Stalker, calls PublishFileUploaded
public void PublishFileUploaded(FileInfo fileName, string clientName)
{ Bus.Publish<IFileUploadedEvent>(evt =>
{ evt.EventId = Guid.NewGuid();
evt.Client = clientName;
evt.FileName = fileName;
});
} } }
가 FileMoverService.App.config에 포함 된 다음 NSB 창에서
<UnicastBusConfig>
<MessageEndpointMappings>
<add Messages="Core" Endpoint="FileWatcherService" />
</MessageEndpointMappings>
</UnicastBusConfig>
, 나는 참조 FileMover : Core.Events.IFileUploadedEvent 구독하기 FileWatcher : @ ccc에서 메시지 유형 구독하기 Core.Events.IFileUploadedEvent
FileMover 클래스는 IHandleMessages를 구현하지만 NServiceBus가 첫 번째 오류를 throw하기 때문에 코드에 도달하지 않습니다.
EndpointConfig에서 Init()를 실행하려고했지만 여전히 동일한 오류가 발생합니다. 제발 도와주세요! 내가 도대체 뭘 잘못하고있는 겁니까?
NServiceBus하지만 키가 여기 파악하는 것에 대해 어떠한 생각이 무엇인지 'path'는 System.ArgumentNullException에서 null입니다 : 값은 null 일 수 없습니다. 매개 변수 이름 : 경로'다음 질문을 찾으면 그 이유는 null입니다. 코드를 단계적으로 축소하여 어떻게 든 축소 할 수 있습니까? –
답장을 보내 주셔서 감사합니다. 전송되는 개체를 볼 때 개체가 null이 아니므로 MSMQ와 UnicastBus간에 잘못 구성된 것으로 향하고 있습니다. 내가 그 길에서 더 많은 것을 찾을 수 있는지 알아 보도록하겠습니다. Brb. – TurtleDev
매우 도움이되었습니다! 이벤트를 문자열로 변경했으며, 그냥 잘 전달합니다. 문제는 내 이벤트 개체와 데이터 형식입니다. 감사합니다 조안나! 너 락! – TurtleDev