服务引用更改时 app.config 不兼容

Posted

技术标签:

【中文标题】服务引用更改时 app.config 不兼容【英文标题】:app.config not compatible when service reference change 【发布时间】:2012-10-12 02:46:01 【问题描述】:

我在项目中收到有关我的 app.config 文件的警告,因为我使用一些不同的方法和配置将服务引用升级到了较新的版本。有没有一种方法可以生成一个新的 app.config 文件,而不必更改它的所有绑定和端点,因为那会非常累人。我猜一定有办法。

这是我的 app.config:

<?xml version="1.0" encoding="utf-8" ?>
<configuration>
    <system.diagnostics>
        <sources>
            <!-- This section defines the logging configuration for My.Application.Log -->
            <source name="DefaultSource" switchName="DefaultSwitch">
                <listeners>
                    <add name="FileLog"/>
                    <!-- Uncomment the below section to write to the Application Event Log -->
                    <!--<add name="EventLog"/>-->
                </listeners>
            </source>
        </sources>
        <switches>
            <add name="DefaultSwitch" value="Information" />
        </switches>
        <sharedListeners>
            <add name="FileLog"
                 type="Microsoft.VisualBasic.Logging.FileLogTraceListener, Microsoft.VisualBasic, Version=8.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a, processorArchitecture=MSIL"
                 initializeData="FileLogWriter"/>
            <!-- Uncomment the below section and replace APPLICATION_NAME with the name of your application to write to the Application Event Log -->
            <!--<add name="EventLog" type="System.Diagnostics.EventLogTraceListener" initializeData="APPLICATION_NAME"/> -->
        </sharedListeners>
    </system.diagnostics>
    <system.serviceModel>
        <bindings>
            <basicHttpBinding>
                <binding name="Apsis Newsletter Pro v3 APISoap" closeTimeout="00:01:00"
                    openTimeout="00:01:00" receiveTimeout="00:10:00" sendTimeout="00:01:00"
                    allowCookies="false" bypassProxyOnLocal="false" hostNameComparisonMode="StrongWildcard"
                    maxBufferSize="65536" maxBufferPoolSize="524288" maxReceivedMessageSize="65536"
                    messageEncoding="Text" textEncoding="utf-8" transferMode="Buffered"
                    useDefaultWebProxy="true">
                    <readerQuotas maxDepth="32" maxStringContentLength="8192" maxArrayLength="16384"
                        maxBytesPerRead="4096" maxNameTableCharCount="16384" />
                    <security mode="None">
                        <transport clientCredentialType="None" proxyCredentialType="None"
                            realm="" />
                        <message clientCredentialType="UserName" algorithmSuite="Default" />
                    </security>
                </binding>
            </basicHttpBinding>
            <customBinding>
                <binding name="Apsis Newsletter Pro v3 APISoap12">
                    <textMessageEncoding maxReadPoolSize="64" maxWritePoolSize="16"
                        messageVersion="Soap12" writeEncoding="utf-8">
                        <readerQuotas maxDepth="32" maxStringContentLength="8192" maxArrayLength="16384"
                            maxBytesPerRead="4096" maxNameTableCharCount="16384" />
                    </textMessageEncoding>
                    <httpTransport manualAddressing="false" maxBufferPoolSize="524288"
                        maxReceivedMessageSize="65536" allowCookies="false" authenticationScheme="Anonymous"
                        bypassProxyOnLocal="false" hostNameComparisonMode="StrongWildcard"
                        keepAliveEnabled="true" maxBufferSize="65536" proxyAuthenticationScheme="Anonymous"
                        realm="" transferMode="Buffered" unsafeConnectionNtlmAuthentication="false"
                        useDefaultWebProxy="true" />
                </binding>
            </customBinding>
        </bindings>
        <client>
            <endpoint address="http://api.anpdm.com/ExternalAPIService.asmx"
                binding="basicHttpBinding" bindingConfiguration="Apsis Newsletter Pro v3 APISoap"
                contract="Apsis5.ApsisNewsletterProv3APISoap" name="Apsis Newsletter Pro v3 APISoap" />
            <endpoint address="http://api.anpdm.com/ExternalAPIService.asmx"
                binding="customBinding" bindingConfiguration="Apsis Newsletter Pro v3 APISoap12"
                contract="Apsis5.ApsisNewsletterProv3APISoap" name="Apsis Newsletter Pro v3 APISoap12" />
        </client>
    </system.serviceModel>
</configuration>

这些是警告:

警告 1:自定义工具警告:无法导入 wsdl:portType 详细信息:运行 WSDL 导入扩展时引发异常:System.ServiceModel.Description.XmlSerializerMessageContractImporter 错误:引用类型“http://schemas.xmlsoap.org/soap/encoding/:Array”仅对编码的 SOAP 有效。 错误源的 XPath: //wsdl:definitions[@targetNamespace='http://api.anpdm.com/']/wsdl:portType[@name='Apsis_x0020_Newsletter_x0020_Pro_x0020_v3_x0020_APIHttpGet'] C:\Users\Pedram\Desktop\Apsis5 ( Avanza)\Apsis5\Service References\Apsis5\Reference.svcmap 1 1 Apsis5

警告 2 自定义工具警告:无法导入 wsdl:binding 详细信息:导入 wsdl:binding 所依赖的 wsdl:portType 时出错。 wsdl:portType 的 XPath: //wsdl:definitions[@targetNamespace='http://api.anpdm.com/']/wsdl:portType[@name='Apsis_x0020_Newsletter_x0020_Pro_x0020_v3_x0020_APIHttpGet'] 错误源的 XPath://wsdl:definitions[@targetNamespace='http://api.anpdm.com/']/wsdl:binding[@name='Apsis_x0020_Newsletter_x0020_Pro_x0020_v3_x0020_APIHttpGet'] C:\Users\Pedram\Desktop\Apsis5 ( Avanza)\Apsis5\Service References\Apsis5\Reference.svcmap 1 1 Apsis5

警告 3 自定义工具警告:无法导入 wsdl:port 详细信息:导入 wsdl:port 所依赖的 wsdl:binding 时出错。 XPath to wsdl:binding: //wsdl:definitions[@targetNamespace='http://api.anpdm.com/']/wsdl:binding[@name='Apsis_x0020_Newsletter_x0020_Pro_x0020_v3_x0020_APIHttpGet'] XPath 到错误源://wsdl:definitions[@targetNamespace='http://api.anpdm.com/']/wsdl:service[@name='Apsis_x0020_Newsletter_x0020_Pro_x0020_v3_x0020_API']/wsdl:port[@name='Apsis_x0020_Newsletter_x0020_Pro_x_0020'v ] C:\Users\Pedram\Desktop\Apsis5 (Avanza)\Apsis5\Service References\Apsis5\Reference.svcmap 1 1 Apsis5

警告 4 自定义工具警告:无法导入 wsdl:portType 详细信息:运行 WSDL 导入扩展时引发异常:System.ServiceModel.Description.XmlSerializerMessageContractImporter 错误:引用类型“http://schemas.xmlsoap.org/soap/encoding/:Array”仅对编码的 SOAP 有效。 错误源的 XPath://wsdl:definitions[@targetNamespace='http://api.anpdm.com/']/wsdl:portType[@name='Apsis_x0020_Newsletter_x0020_Pro_x0020_v3_x0020_APIHttpPost'] C:\Users\Pedram\Desktop\Apsis5 ( Avanza)\Apsis5\Service References\Apsis5\Reference.svcmap 1 1 Apsis5

警告 5 自定义工具警告:无法导入 wsdl:binding 详细信息:导入 wsdl:binding 所依赖的 wsdl:portType 时出错。 wsdl:portType 的 XPath: //wsdl:definitions[@targetNamespace='http://api.anpdm.com/']/wsdl:portType[@name='Apsis_x0020_Newsletter_x0020_Pro_x0020_v3_x0020_APIHttpPost'] 错误源的 XPath://wsdl:definitions[@targetNamespace='http://api.anpdm.com/']/wsdl:binding[@name='Apsis_x0020_Newsletter_x0020_Pro_x0020_v3_x0020_APIHttpPost'] C:\Users\Pedram\Desktop\Apsis5 ( Avanza)\Apsis5\Service References\Apsis5\Reference.svcmap 1 1 Apsis5

警告 6 自定义工具警告:无法导入 wsdl:port 详细信息:导入 wsdl:port 所依赖的 wsdl:binding 时出错。 XPath 到 wsdl:binding: //wsdl:definitions[@targetNamespace='http://api.anpdm.com/']/wsdl:binding[@name='Apsis_x0020_Newsletter_x0020_Pro_x0020_v3_x0020_APIHttpPost'] 错误源的 XPath: //wsdl:definitions[@targetNamespace='http://api.anpdm.com/']/wsdl:service[@name='Apsis_x0020_Newsletter_x0020_Pro_x0020_v3_x0020_API']/wsdl:port[@name='Apsis_x0020_Newsletter_x0020_Pro_x_0APIxPosts'v ] C:\Users\Pedram\Desktop\Apsis5 (Avanza)\Apsis5\Service References\Apsis5\Reference.svcmap 1 1 Apsis5

【问题讨论】:

警告是什么?更新服务引用应该更改 app.config。 这是其中之一:警告 1 自定义工具警告:无法导入 wsdl:portType 详细信息:运行 WSDL 导入扩展时引发异常:System.ServiceModel.Description.XmlSerializerMessageContractImporter 错误:引用类型' schemas.xmlsoap.org/soap/encoding/:Array' 仅对编码的 SOAP 有效。错误源的 XPath: //wsdl:definitions[@targetNamespace='api.anpdm.com/']/… C:\Users\Pedram\Desktop\Apsis5 (Avanza)\Apsis5\Service References\Apsis5\Reference.svcmap 1 1 Apsis5 请将它和 app.config 添加到您的问题中 完成。添加了 app.config 和警告。 看起来您的 app.config 没有问题,但服务 wsdl 内容 【参考方案1】:

我没有找到根本问题,但我尝试将我的服务添加为网络参考,一切都开始工作了。

【讨论】:

以上是关于服务引用更改时 app.config 不兼容的主要内容,如果未能解决你的问题,请参考以下文章

从 web./app.config 更改动态 Web 引用

使用引用库的 app.config 设置 [重复]

对象引用未设置为从代码中更改 app.config 中连接字符串的对象实例 [重复]

在不依赖 app.config 的情况下使用 SOAP Web 服务

web.config 和 app.config 混淆

web.config和app.config混淆