Служба WCF получает сообщение об ошибке MessageContract на сервере 2003, а не в других местах
У меня есть служба WCF, к которой я подключаюсь. Он отлично работает с моей локальной машины при тестировании. Также отлично работает на одном месте тестирования под управлением Windows Server 2008.
одна из наших производственных машин работает под управлением Windows Server 2003, и я получаю это сообщение об ошибке:
The operation 'theOperation' could not be loaded because it has a parameter or return type of type System.ServiceModel.Channels.Message or a type that has MessageContractAttribute and other parameters of different types. When using System.ServiceModel.Channels.Message or types with MessageContractAttribute, the method must not use any other types of parameters.
Я посмотрел на ошибку и знаю, что это значит, но я очень смущен, потому что он работает в 2 местах, а не в другом. Что-то не так с сервером 2003 или другими настройками, которые могут отсутствовать у меня на производственном сервере? Код точно такой же.
Изменить: я использую.net 4.0
1 ответ
2003? Какие рамки вы используете?
Я не знаком с этой ошибкой, но вы можете включить вход в свою службу, добавив следующий раздел в файл app.config для своей службы (я допускаю, что вы не размещаете IIS).
<system.diagnostics>
<sources>
<source name="System.ServiceModel"
switchValue="Information, ActivityTracing"
propagateActivity="true" >
<listeners>
<add name="xml"/>
</listeners>
</source>
<source name="System.ServiceModel.MessageLogging">
<listeners>
<add name="xml"/>
</listeners>
</source>
<source name="myUserTraceSource"
switchValue="Information, ActivityTracing">
<listeners>
<add name="xml"/>
</listeners>
</source>
</sources>
<sharedListeners>
<add name="xml"
type="System.Diagnostics.XmlWriterTraceListener"
initializeData="c:\locationofourlogfile\wcf.svclog" />
</sharedListeners>
</system.diagnostics>
Это позволит войти в папку, указанную в конфигурации, вы можете открыть этот файл в svcutil, и, возможно, получить более мудрый. SvcUtil находится в вашей папке winsdk.
Надеюсь, поможет.