Как создать файл web.config для загрузки SoapExtension? - PullRequest
6 голосов
/ 06 апреля 2011

Мне нужно использовать подкласс SoapExtension (который я создал), но кажется, что этот класс можно инициализировать только через файл "web.config" (хотя я читал, что это должно быть возможно через "app.config")файл - но я не знаю, как это сделать).Проблема: в моем проекте нет файла web.config.Поэтому я создал его вручную со следующим содержимым:

<?xml version="1.0" encoding="utf-8"?>
<configuration>
  <system.web>
    <webServices>
      <soapExtensionTypes>
        <add type="MyNameSpace.MySoapExtension,MyAssemblyFileName" priority="1"/>
      </soapExtensionTypes>
    </webServices>
  </system.web>
</configuration>

Несмотря на то, что точки прерывания отправляются в каждом из методов SoapExtension, во время выполнения ничего не происходит, кажется, что оно никогда не инициализируется ни с именем ... (Мой SoapService инициализируется нормально,но без какого-либо расширения).

Я полагаю, что создания файла web.config вручную может быть недостаточно для его учета, поэтому мне интересно, как правильно настроить мое приложение, чтобы иметь web.configфайл для использования моего SoapExtension (он должен пойти и инициализировать мой класс, processMessage и chainStream материал ...).

(Примечание: это моя первая реализация SoapExtension, я не совсем уверен в том, чтоЯ делаю)

Ответы [ 2 ]

12 голосов
/ 06 апреля 2011

Я узнал, как (или даже «куда») вставить содержимое web.config в файл app.config:

Мне пришлось вставить его после 'ApplicationSettings' и 'userSettings'; это единственное место, где он не генерирует никаких ошибок во время выполнения (поэтому нет необходимости в файле web.config - хотя я все еще хотел бы знать, как настроить приложение, если у кого-то есть ответ ...).

<?xml version="1.0" encoding="utf-8"?>
<configuration>
    <configSections>
    </configSections>
    <applicationSettings>
    </applicationSettings>
    <userSettings>
    </userSettings>
    <system.web>
        <webServices>
          <soapExtensionTypes>
            <add type="MyNameSpace.MySoapExtension,MyAssemblyFileName" priority="1"/>
          </soapExtensionTypes>
        </webServices>
    </system.web>
    <system.serviceModel>
        <bindings />
        <client />
    </system.serviceModel>
</configuration>

Моя SoapExtension теперь правильно инициализирована, фильтрация сообщений работает нормально.

0 голосов
/ 07 мая 2013

В связи с комментарием @ soleshoe Я не смог заставить мои модульные тесты (XUnit) работать, в итоге мой App.config выглядел следующим образом.

 <?xml version="1.0" encoding="utf-8"?>
<configuration>
  <configSections>
  </configSections>
  <system.web>
    <webServices>
      <soapExtensionTypes>
        <add type="System.Common.SOAPExtensions.TraceExtension, System.Common"  priority="1"/>
      </soapExtensionTypes>
    </webServices>
  </system.web>
</configuration>
...