2013-01-14 3 views
3

타임 아웃 일정을 시도하지만이 시도 할 때이 오류가 얻을 때 레이븐 400 "요청이 너무 긴"오류를 반환 :NServiceBus 내가 까마귀 시간 제한 persister를 사용하여 제한 시간을 예약하려고하는 NServiceBus 사가이

NServiceBus.Unicast.Transport.Transactional.TransactionalTransport [(null)] <(null)> - Failed raising 'transport message received' event for message with ID=90dadfbd-9eb6-4558-96ec-37edb642330a\17275422 
    System.InvalidOperationException: <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN""http://www.w3.org/TR/html4/strict.dtd"> 
    <HTML><HEAD><TITLE>Bad Request</TITLE> 
    <META HTTP-EQUIV="Content-Type" Content="text/html; charset=us-ascii"></HEAD> 
    <BODY><h2>Bad Request - Request Too Long</h2> 
    <hr><p>HTTP Error 400. The size of the request headers is too long.</p> 
    </BODY></HTML> 
    ---> System.Net.WebException: The remote server returned an error: (400) Bad Request. 
     at System.Net.HttpWebRequest.GetResponse() 
     at Raven.Client.Connection.HttpJsonRequest.ReadStringInternal(Func`1 getResponse) 
     --- End of inner exception stack trace --- 
     at Raven.Client.Connection.HttpJsonRequest.ReadStringInternal(Func`1 getResponse) 
     at Raven.Client.Connection.HttpJsonRequest.ReadResponseString() 
     at Raven.Client.Connection.HttpJsonRequest.ReadResponseJson() 
     at Raven.Client.Connection.ServerClient.DirectPut(RavenJObject metadata, String key, Nullable`1 etag, RavenJObject document, String operationUrl) 
     at Raven.Client.Connection.ServerClient.<>c__DisplayClass10.<Put>b__f(String u) 
     at Raven.Client.Connection.ServerClient.TryOperation[T](Func`2 operation, String operationUrl, Boolean avoidThrowing, T& result) 
     at Raven.Client.Connection.ServerClient.ExecuteWithReplication[T](String method, Func`2 operation) 
     at Raven.Client.Connection.ServerClient.Put(String key, Nullable`1 etag, RavenJObject document, RavenJObject metadata) 
     at Raven.Client.Document.HiLoKeyGenerator.PutDocument(JsonDocument document) 
     at Raven.Client.Document.HiLoKeyGenerator.GetNextMax() 
     at Raven.Client.Document.HiLoKeyGenerator.NextId() 
     at Raven.Client.Document.HiLoKeyGenerator.GenerateDocumentKey(DocumentConvention convention, Object entity) 
     at Raven.Client.Document.MultiTypeHiLoKeyGenerator.GenerateDocumentKey(DocumentConvention conventions, Object entity) 
     at Raven.Client.Document.DocumentStore.<>c__DisplayClass1.<Initialize>b__0(Object entity) 
     at Raven.Client.Document.InMemoryDocumentSessionOperations.GetOrGenerateDocumentKey(Object entity) 
     at Raven.Client.Document.InMemoryDocumentSessionOperations.StoreInternal(Object entity, Nullable`1 etag, String id) 
     at Raven.Client.Document.InMemoryDocumentSessionOperations.Store(Object entity) 
     at NServiceBus.Timeout.Hosting.Windows.Persistence.RavenTimeoutPersistence.Add(TimeoutData timeout) 
     at NServiceBus.Timeout.Core.TimeoutTransportMessageHandler.Handle(TransportMessage message) 
     at NServiceBus.Unicast.Transport.Transactional.TransactionalTransport.OnTransportMessageReceived(TransportMessage msg) 

nservicebus 호스트 인 & 레이븐 서비스를 다시 시작했습니다. 나는이 무용담을 다시 만들려고 노력했지만 여전히 발생합니다. 예정되고

시간 초과 상태 메시지는 작은입니다 : 이것은 사용자 지정 응용 프로그램을 instumenting에서 새로운 유물을 중지하여 내 경우에는 해결되었습니다

<Messages xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns="http://tempuri.net/Invoicing.Service"> 
    <IPartPaymentTimeout> 
     <Amount>10.00</Amount> 
     <OriginalTransactionTimeUtc>2013-01-14T05:49:04.8180938Z</OriginalTransactionTimeUtc> 
     <PaymentNumber>7</PaymentNumber> 
     <Id>123456</Id> 
     <InvoiceNumber>1234567/34567</InvoiceNumber> 
    </IPartPaymentTimeout> 
</Messages> 
+0

당신은 피들러의 원시 HTTP 요청을 캡처 할 수 있습니다 :

사용은 System.Diagnostics 네임에서 추적,이를 감지하려면? –

+0

NiddviceBus를 피 들러를 통해 라우팅하려면 어떻게해야합니까? –

+0

http://andreasohlund.net/2012/10/16/how-to-debug-ravendb-through-fiddler-using-nservicebus/ –

답변

3

. NewRelic에서 NServiceBus.Host의

X-NewRelic-ID: <hash>, <samehash>, <samehash>,.....<samehash>

비활성화 계측 : 그것은 너무 오래 증가 할 때까지 동일한 데이터가 추가됩니다 요청 헤더 X-NewRelic-ID을 추가 새로운 유물에 버그가있는 것 같습니다. xml 파일은 헤더가 전송되는 것을 방지합니다.

NewRelic.xml에서 crossApplicationTracingEnabled을 해제 할 수도 있습니다.

<system.diagnostics> 
<trace autoflush="true" /> 
<sources> 
    <source name="System.Net" maxdatasize="1024"> 
    <listeners> 
     <add name="MyTraceFile"/> 
    </listeners> 
    </source> 
</sources> 

<sharedListeners> 
    <add 
    name="MyTraceFile" 
    type="System.Diagnostics.TextWriterTraceListener" 
    initializeData="System.Net.trace.log" 
      /> 
</sharedListeners> 

<switches> 
    <add name="System.Net" value="Verbose" /> 
</switches> 

+0

FYI : 원래 보고서가 상당히 오래되어서 New Relic .NET Agent의 이후 버전에서 더 이상이 문제가 발생하지 않습니다. – Scalayer

+0

@Scalayer 나는 오늘도 똑같은 문제를 겪었으므로 이것은 전혀 수정되지 않았다. –