如何创建一个web.config文件来加载SoapExtension?

时间:2011-04-06 08:10:07

标签: c# web-services web-config asmx soap-extension

我需要使用一个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方法中断开了断点,但在运行时没有任何事情发生,似乎它永远不会被初始化nore called ...(我的SoapService初始化ok,但没有任何扩展名。)

我想手动创建web.config文件可能不足以将其考虑在内,所以我想知道如何正确配置我的应用程序以拥有web.config文件以便使用我的SoapExtension(它应该去初始化我的类,processMessage和chainStream的东西......)。

(注意:这是我的第一个SoapExtension实现,我不确定我在做什么)

2 个答案:

答案 0 :(得分:11)

我发现了如何(或者确实在哪里')在app.config文件中插入web.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现在似乎已正确初始化,消息过滤工作正常。

答案 1 :(得分:0)

与@ 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>