2
WCF REST Service가 있는데이 서비스의 모든 메시지가 기록되도록하고 싶습니다. 이 (예, 그것은 에뮬레이트 aspx 페이지)WCF REST 메시지 로깅, POST 요청 문제
[OperationContract(Name = "process.aspx")]
[WebInvoke(Method = "POST",ResponseFormat = WebMessageFormat.Xml)]
Stream ProcessRequest(Stream data);
내 서비스
WebHttpBinding basicWebBinding = new WebHttpBinding
{
MaxReceivedMessageSize = int.MaxValue,
MaxBufferSize = int.MaxValue,
MaxBufferPoolSize = int.MaxValue,
CloseTimeout = new TimeSpan(0, 3, 0),
OpenTimeout = new TimeSpan(0, 3, 0),
ReceiveTimeout = new TimeSpan(0, 3, 0),
TransferMode = TransferMode.Buffered,
SendTimeout = new TimeSpan(0, 3, 0),
WriteEncoding = Encoding.UTF8,
ReaderQuotas = new XmlDictionaryReaderQuotas()
{
MaxStringContentLength = int.MaxValue,
}
};
이 조작 계약에 대한 바인딩을 사용하여
<system.serviceModel>
<diagnostics>
<messageLogging logEntireMessage="true" logMalformedMessages="true"
logMessagesAtServiceLevel="true" logMessagesAtTransportLevel="true" />
</diagnostics>
</system.serviceModel>
<system.diagnostics>
<sources>
<source name="System.ServiceModel.MessageLogging" switchValue="Warning,ActivityTracing">
<listeners>
<add type="System.Diagnostics.DefaultTraceListener" name="Default">
<filter type="" />
</add>
<add name="ServiceModelMessageLoggingListener">
<filter type="" />
</add>
</listeners>
</source>
</sources>
<sharedListeners>
<add initializeData="logs\\messages.svclog"
type="System.Diagnostics.XmlWriterTraceListener, System, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089"
name="ServiceModelMessageLoggingListener" traceOutputOptions="Timestamp">
<filter type="" />
</add>
</sharedListeners>
<trace autoflush="true" />
</system.diagnostics>
난`내의 app.config에서 나는이 구성을 가지고
Everythig는 괜찮은 것처럼 보이지만 요청에 대한 POST 데이터를 볼 수 없습니다. 예 :
<MessageLogTraceRecord>
<HttpRequest xmlns="http://schemas.microsoft.com/2004/06/ServiceModel/Management/MessageTrace">
<Method>POST</Method>
<QueryString></QueryString>
<WebHeaders>
<Connection>keep-alive</Connection>
<Content-Length>123</Content-Length>
<Content-Type>application/x-www-form-urlencoded</Content-Type>
<Accept>text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8</Accept>
<Accept-Encoding>gzip, deflate</Accept-Encoding>
<Accept-Language>ru-RU,ru;q=0.8,en-US;q=0.5,en;q=0.3</Accept-Language>
<Host>localhost</Host>
<Referer>http://localhost/...</Referer>
<User-Agent>Mozilla/5.0 (Windows NT 6.1; WOW64; rv:16.0) Gecko/20100101 Firefox/16.0</User-Agent>
</WebHeaders>
</HttpRequest>
<Binary xmlns=""></Binary>
</MessageLogTraceRecord>
이에
및 응답
<MessageLogTraceRecord>
<HttpRequest xmlns="http://schemas.microsoft.com/2004/06/ServiceModel/Management/MessageTrace">
<Method>POST</Method>
<QueryString></QueryString>
<WebHeaders>
<Connection>keep-alive</Connection>
<Content-Length>159</Content-Length>
<Content-Type>application/x-www-form-urlencoded</Content-Type>
<Accept>*/*</Accept>
<Accept-Encoding>gzip, deflate</Accept-Encoding>
<Accept-Language>ru</Accept-Language>
<Host>localhost...</Host>
<User-Agent>agent</User-Agent>
</WebHeaders>
</HttpRequest>... stream ...</MessageLogTraceRecord>
어떤 도움도 좋을 것이다.
나는 메시지 크기에 문제가 있는지가 윈도우 이벤트 로그에 항목을 추가 생각합니다. –
불행하게도 maxSizeOfMessageToLog를 설정해도이 문제가 해결되지 않았습니다. 요청시 이 계속 발생하고 logMessagesAtTransportLevel = "false"인 경우 : ... stream ... MessageLogTraceRecord> 응답으로 –
Yaroslav
스트림이 당신을 deserialise에 괜찮아오고 있습니까? 이 내용이 콘텐츠 형식으로 판단되는 양식 게시물에서 온 것 같습니다. –