ResponseSoapContext.Current равен нулю
Я выполняю код веб-службы на своем компьютере вместе с кодом клиента. Он работал нормально и ему удалось получить вложения Dime, отправленные клиенту из веб-службы.
Веб-сервис использует вложения WSE 2.0 и Dime. Код клиента находится на той же машине, которая вызывает веб-сервис.
Однако, когда я собираюсь развернуть его на Windows 2003 R2 Server, в строке ResponseSoapContext.Current.add(dimeAttachment) произошел сбой, поскольку объект ResponseSoapContext.Current имеет значение null.
Клиентский код смог вызвать веб-сервис, как я вижу в журналах, он пытается что-то сделать.
Будет ли брандмауэр, останавливающий код клиента, получающий вложение Dime от веб-службы? Или есть настройки, которые мне не хватает? Вот код:
DimeAttachment dimeAttach = new DimeAttachment(
"application/octet-stream", TypeFormat.MediaType,
streamObj);
if (ResponseSoapContext.Current != null)
{
ResponseSoapContext.Current.Attachments.Add(dimeAttach);
}
else
{
throw new Exception("The ResponseSoapContext.Current object is null");
}
2 ответа
Оказывается, на сервере был установлен Microsoft WSE 2.0 SP2, где в качестве клиента использовался Microsoft WSE 2.0 SP3.
Установил Microsoft WSE 2.0 SP3 на сервер и обновил ссылки, и теперь все работает.
У меня была эта проблема, и я решил ее из моего файла web.config сервера, добавив некоторые конфигурации о WSE. Мой web.config(удаленные настройки, не относящиеся к WSE):
<?xml version="1.0"?>
<configuration>
<configSections>
<section name="microsoft.web.services2" type="Microsoft.Web.Services2.Configuration.WebServicesConfiguration, Microsoft.Web.Services2, Version=2.0.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35" />
</configSections>
<system.web>
<webServices>
<soapExtensionTypes>
<add type="Microsoft.Web.Services2.WebServicesExtension, Microsoft.Web.Services2, Version=2.0.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35" priority="1" group="0" />
</soapExtensionTypes>
</webServices>
</system.web>
<microsoft.web.services2>
<messaging>
<maxRequestLength>1024000</maxRequestLength>
</messaging>
<diagnostics />
</microsoft.web.services2>
</configuration>