gpt4 book ai didi

c# - SoapExtension System.Configuration.ConfigurationErrorsException in web.config 无法解析属性 'type'的值

转载 作者:太空狗 更新时间:2023-10-30 01:13:42 30 4
gpt4 key购买 nike

我在配置 SoapExtension 时遇到问题(而不是在实现方面)。首先,我已经阅读了所有这些帖子(以及其他帖子),它们在某种程度上与 SoapExtensions 相关:

  1. Intercept SOAP messages from and to a web service at the client
  2. https://www.codeproject.com/Articles/34381/Efficient-Tracing-Using-SOAP-Extensions-in-NET
  3. https://social.msdn.microsoft.com/Forums/en-US/d8d6fe09-74be-4210-91bb-a8924a742e8c/how-to-log-soap-message-which-is-going-out-of-my-web-application?forum=ncl
  4. http://www.seanmcilvenna.com/2010/08/20/logging-full-soap-messages/
  5. How to create a web.config file to get SoapExtension loading?
  6. Intercept messages in a WCF Client
  7. https://msdn.microsoft.com/en-us/library/esw638yk(VS.85).aspx
  8. https://social.msdn.microsoft.com/Forums/en-US/1ba267b8-c08d-4c30-a1e1-792bac92fc87/soapextension-does-not-work-in-client-side?forum=netfxnetcom
  9. SoapExtension not loading

场景如下:

  • 我正在使用来自库 (dll) 项目的第 3 方 WS(SOAP):connectors.dll

  • 在这个项目中,我有一个对第 3 方 WS(SOAP) 的网络引用。我用 VS 生成了代理(添加网络引用,并指向 wsdl)。

  • 另一方面,我有一个 Web 应用程序(实际上是一个 REST 服务),引用了 connectors.dll 的一个类(我们可以称之为 Connector-A)

(直到这里,我通过我的 REST-Service webapp 调用了一个 rest 服务,调用了连接器-A,这最后一次调用了 3rdParty 的代理服务。我收到了一个响应,但是它有一个无效的字符(位置 1 处的 0x1F),这就是我尝试使用 SoapExtension -> 在反序列化发生之前删除它的原因)

最后一步,配置:* 在我的 REST-Service (webapp) 中添加对 Backend.SoapExtnsions.dll 的引用(VS->Add Reference)

  • 在 web.config 中注册 soapExtension :

`

<system.web>
<compilation debug="true" targetFramework="4.5" />
<httpRuntime targetFramework="4.5" maxUrlLength="4000" />
<authentication mode="None" />
<webServices>
<soapExtensionTypes>
<add type="Backend.SoapExtensions.XmlCleanupSoapExtension, Backend.SoapExtensions, Version=1.0.0.0, Culture=neutral, PublicKeyToken=66269ab3fc862c8f" priority="1" group="0" />
</soapExtensionTypes>
</webServices>
<globalization uiCulture="auto:es" culture="auto:es-ES" enableClientBasedCulture="true" />
</system.web>

`

当我调用一个 rest-service 时,它​​最后调用了 WS-Soap 我现在得到一个运行时异常,这让我抓狂:

The value of the property 'type' cannot be parsed. The error is: Could not load type 'Offidesk.Backend.SoapExtensions.XmlCleanupSoapExtension' from assembly 'Offidesk.Backend.SoapExtensions'.

我想我已经为这一行尝试了所有可能的组合:

<add type="Backend.SoapExtensions.XmlCleanupSoapExtension, Backend.SoapExtensions, Version=1.0.0.0, Culture=neutral, PublicKeyToken=66269ab3fc862c8f" priority="1" group="0" />

  • 有和没有程序集名称
  • 有和没有命名空间
  • 有和没有版本、文化和 PublicToken
  • Group="0"和 Group="High"

实际上,我对这个运行时异常感到非常沮丧。我虽然可能 block 内部的位置可能会影响,但我所有的尝试都得到了相同的异常......

有什么想法吗??

提前致谢。

注意:我还尝试了其他技术来清除覆盖 SoapHttpClientProtocol(在扩展类中)方法的服务器响应:GetReaderForMessage但也不适合我(不知道为什么)。

编辑

最后,无效字符 0x1F 的问题不是这样的。我没有意识到响应是用 gzip 压缩的,代理客户端试图将压缩响应解析为 XML,这显然在运行时引发了异常。

但是,我非常想知道为什么我的带有 soap 扩展的 web.config 不起作用(迟早我们会需要这个配置......所以最好避免)。

最佳答案

对于像我这样来到这里的 Google 员工来说,如果你的 soap 扩展是一个不同于使用它的项目,那么你的 app/web.config 中“type”的预期格式是“namespace.class, project”。

根据您做错了什么,错误消息会略有不同。

如果错误是“Could not load type 'MyType' from assembly 'System.Web.Webservices...”你没有逗号后的第二部分——项目 SOAP 扩展。它希望在 System.Web.Webservices 中找到您的类作为默认类,这当然不是您拥有它的地方。

如果错误只是“Could not load file or assembly 'MyProject' or one of its dependencies...”这意味着逗号后的第二部分是错误的而不是丢失。

  • 确保在您尝试使用它的项目中确实有对 soap 项目的引用。
  • 确保您在 app/web.config 中正确命名了它。不要假设它只是命名空间的第一部分。在解决方案资源管理器中,转到包含您的 app/web.config 的项目的引用,右键单击您尝试引用的项目并查看属性。您要在“身份”字段中逗号后放入 app/web.config 中的值。

关于c# - SoapExtension System.Configuration.ConfigurationErrorsException in web.config 无法解析属性 'type'的值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48587907/

30 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com