Служба 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.

Надеюсь, поможет.

Другие вопросы по тегам