问题标签 [wse3.0]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
.net - 'Microsoft.Web.Services3.Addressing.Address' 无法序列化
我正在尝试为 WSE3/ASMX Web 服务编写 WCF 包装器 Web 服务。[丑陋的原因是第 3 方供应商不支持 SSL,而这正是 BizTalk 2009 WCF 适配器与 WS-Security 一起工作所需要的。因此,如果供应商没有改变 - 我需要调用本地 WCF Web 服务...]
我按照这篇文章获得了 VS2008 内置的 WSE3 代理构建器:http: //blogs.imeta.co.uk/jyoung/archive/2008/08/29/345.aspx 我对供应商的.asmx 远程网络服务。
我在本地构建和发布我的 web 服务,然后尝试在浏览器中打开它,然后得到这个错误:
System.InvalidOperationException:在调用 WSDL 导出扩展时引发异常:System.ServiceModel.Description.DataContractSerializerOperationBehavior 合同: http ://tempuri.org/:IValuationService ----> System.Runtime.Serialization.InvalidDataContractException:类型'Microsoft.Web.Services3.Addressing.Address' 无法序列化。考虑使用 DataContractAttribute 属性对其进行标记,并使用 DataMemberAttribute 属性标记您想要序列化的所有成员。有关其他支持的类型,请参阅 Microsoft .NET Framework 文档。
如何使我没有编写的对象('Microsoft.Web.Services3.Addressing.Address')可序列化?有可能完成我正在尝试的事情吗?
谢谢,
尼尔·沃尔特斯
附加信息 - 2009 年 11 月 16 日星期一:
当我对 Microsoft.Web.Services3.WebServicesClientProtocol 进行“转到定义”时,我唯一能在元数据上找到对“Microsoft.Web.Services3.Addressing.Address”的任何引用的地方
换句话说,我如何摆脱“Microsoft.Web.Services3.Addressing.Address”?EndpointReference 似乎在“Microsoft.Web.Services3.Addressing.Address”对象中。因此,如果我使用 WSE3 生成的代码,它会尝试对其进行序列化。
所以我认为解决方案将是编写另一个 WSE3 免费的包装器 - 并通过 WCF 公开它。但诀窍在于,供应商的 Web 服务有许多大而复杂的对象——现在它们都继承自 Microsoft.Web.Services3.WebServicesClientProtocol(因为我使用的是 WS3 代码生成器)。我真的不想再次手动构建所有这些。在上面的示例中,“ValuationService”只是此类对象之一。
wcf - “无法连接到远程服务器”
我可以从 Windows 窗体程序调用第 3 方供应商的 Web 服务就好了。当我尝试从 WCF Web 服务调用相同的 Web 服务和 Web 方法以及相同的 URL 时,我收到以下错误:
我基本上是在尝试为供应商 .asmx/WSE3 服务编写 WCF 包装器。让我们不要下车 - 但微软说 WCF 可以调用 WSE3,但只有在 SSL 开启的情况下,我的供应商 - 不管你信不信 - 不允许 SSL 连接。所以我坚持编写包装器,以便可以从 BizTalk 2009 调用。现在,我正在通过控制台程序测试包装器。
我什至可以做些什么来调试?我在调用 .asmx 服务的 WCF 服务之前和之后添加了 EventLog 跟踪 - 所以我知道这就是它正在发生的地方(加上上面错误中的行号)。
我的 web.config 中有以下内容:
我已将目录完全访问权限授予所有人-但那里没有出现任何痕迹。
我可以寻找或尝试接下来调试哪些东西?
从理论上讲,“ping”结果应该无关紧要,因为该网站正在使用调用它的 Windows 窗体程序工作。
尽管如此 - 这是 Ping 显示的内容,对我来说它看起来有点可疑:
C:\Users\uxnxw01>ping rct.msbexpress.net
谢谢,
尼尔·沃尔特斯
WireShark 分析
我确实运行了 Wireshark - 在下面的评论中发布了一些结果。不过,多读后,它并不总是说“Destination Unreachable”。但在它失败的情况下,我永远不会得到任何数据回传。我仍然很困惑下一步该做什么。我一直在比较数据包,但它很慢而且令人困惑。例如,我仍然没有找到我在请求数据包中传递的密钥(特定的 policyNum)。我还在有效的语句中看到了一些“无法到达的目标”语句。
在有效的那个中,我从来没有看到 66.77.241.76,我只看到我们公司的代理。但我在配置(或代码)中看不到任何告诉 WSE3 使用或不使用代理的内容。
远程登录结果:
我不确定这证明了什么。就像我说的,我绝对可以通过直接调用其 WSE3 接口从 Windows 窗体调用相同的 Web 服务。我知道我可以通过这种方式到达那里。
我认为这两个程序的主要区别是一个在 Win Form 下运行并直接调用 WSE3。那个有效。失败的代码基本上是 99% 相同的代码,作为 WCF 服务发布,因此它在 IIS 下运行(然后控制台程序调用我机器上的 WCF/IIS 服务,该服务又调用 WSE3 服务)。
IIS 不使用相同的代理是否有某些原因?
.net - 在配置与代码中为 WSE/SOAP Web 服务指定代理
有没有办法在配置文件中指定 WSE3 代理而不是代码。我想出了如何让它在代码中工作,如下所示:
详细信息:我有一个调用 WSE3 外部供应商 Web 服务的 WCF 包装器 Web 服务。WSE3 代码在从表单调用时工作正常,但在 IIS 下作为另一个 Web 服务运行时却不行。
c# - WSE3 目标与 URL
我有一个供应商告诉我 SOAP 标头中不应包含 https,但我们仍然可以通过 SSL 进行通信。我们担心的是我们想通过 SSL 进行通信,并且他们的示例代码导致它不会发生。
在他们的示例程序中,他们提供了以下代码:
从将其分解为更小的步骤并添加一些调试,似乎当您更改目标时,URL 会自动更改。
输出:
问题: 目标中的 URL 是否可以与 URL 不同?如果有怎么办?
此外,如果我在更新目标后重置 URL,目标也会更改。似乎两者以某种方式相互联系并且不能不同?
谢谢,
尼尔·沃尔特斯
更新 1:一些研究表明供应商可能能够将SoapActor 属性添加到他们的站点。
当我们在 URL 中有 https 时,他们会给出这个错误:
标头必须与 Web 服务的参与者 URI 值匹配。可以使用 ASMX 类上的 SoapActorAttribute 显式指定参与者 URI 值。在没有该属性的情况下,假定参与者 URI 等于传入消息的 HTTP 请求 URL。收到的标头包含“ https://somesite.net/orgid/SomeApp/SomeService.asmx ”,而接收者期待“ http://somesite.net/orgid/SomeApp/SomeService.asmx ”。
web-services - WSE 3.0 Web 服务未知的派生类型
我有一个基于 WSE 3.0 的 Web 服务和一个 WinForms 客户端应用程序,该应用程序利用该服务的 References.cs 中定义的类型,但对它们进行子类化以提供客户端所需的一些附加功能。
但是,当我将子类的实例传回 Web 服务时,即使我明确地转换回原始类型,我也会感到害怕:
使用 XmlInclude 或 SoapInclude 属性指定静态未知的类型。
参考我的派生类型。
代码摘要:
我可以通过显式创建 DefinedInReferenceCs 实例并执行相关字段的深层复制来解决此问题。有没有更好的办法?
c# - WSE032 error, WebServicesConfiguration cannot load config. section
I have developed a small tool to upload salary information to the swiss administration and I used WSE 3.0 with success. But now, one of my customers has reported that on his machine, my program crashes with the following stack trace:
I've tried to figure out what this means, but I must admit that I am a bit lost here. The program has a .exe.config
file with the following contents:
Removing the <security>
node from the XML above sort of fixes the issue (the WSE032 error vanishes) but this is not a solution in my case, as I need to configure the security this way in order to be able to sign the data I am transmitting later on.
Any idea what could be the issue. Obviously, WSE 3.0 has been installed on the customer's machine, since otherwise, the stack trace would not have shown it in the callers before WSE032 error happens.
c# - 使用 WSE 3.0 添加 SOAP:HEADER 用户名和密码
我已经成功创建了一个在不使用身份验证时可以正常工作的 WS 客户端。
但是,服务器(WebSphere)现在需要添加一个 ws-security 用户名令牌,我很难做到这一点。生成的 SOAP 消息应该如下所示:
我已经下载并安装了 Microsoft 的 WSE 3.0 SDK,并在我的 Visual Studio 2005 项目中添加了对 DLL 的引用。
我现在可以访问 Microsoft.Web.Services3.* 命名空间,但我目前不知道如何继续。
客户端代码已由 Web 引用自动生成,因此我只做少量工作即可将消息发送到未经身份验证的服务器:
我刚刚开始使用 进行调查Microsoft.Web.Services3.Security.Tokens.UsernameTokenManager
,但到目前为止,我还无法启动并运行任何东西。
任何提示将不胜感激,因为我似乎无法在网上找到任何好的食谱。
谢谢!
c# - 一个操作只能有一个给定类型的输入或输出标头?
情况:我正在尝试使用客户端 Web 服务进行 CC 授权。他们没有在该站点上发布 WSDL 文件,但他们提供了 WSDL 文件。我正在使用 Visual Studio 2005 并创建一个使用 Web 服务的 Web 应用程序。
似乎适用的此错误的唯一参考是:http: //followtheheard.blogspot.com/2007/12/sumption-web-services.html。我安装了 WSE3.0 并将我的项目配置为使用 WSE,并且正在调用 Web 参考的 WSE 版本,但我仍然收到此错误。任何帮助,将不胜感激。
wcf - 什么是 WCF 等价物?
我正在尝试将一些基于 WSE3.0 的代码移植到 WCF。基本上,旧代码具有以下配置:
通过我的“服务参考”调用相同的服务时,我收到此错误:
请求不包含必需的安全标头
我的绑定看起来像这样:
据我了解,我调用的服务只需要 SSL 连接,因为它接收用户名和密码作为请求参数的一部分。
任何帮助或建议将不胜感激。
.net - 尝试将 Web 引用添加到 WCF 服务的 HTTP 400 错误请求错误
我一直在尝试将旧版 WSE 3 Web 服务移植到 WCF。由于保持与 WSE 3 客户端的向后兼容性是目标,因此我遵循了本文中的指导。
经过反复试验,我可以从我的 WSE 3 客户端调用 WCF 服务。但是,我无法从 Visual Studio 2005(安装了 WSE 3)添加或更新对此服务的 Web 引用。响应是“请求失败,HTTP 状态 400:错误请求”。尝试使用 wsewsdl3 实用程序生成代理时遇到相同的错误。我可以使用 VS 2008 添加服务参考。
我尝试在 Windows 7 和 Windows 2008 Server R2 上的 IIS 7.5 中托管该服务,结果相同。任何解决方案或故障排除建议?
以下是我的 WCF 服务的配置文件中的相关部分。
更新:在尝试保罗的跟踪建议后,我确定异常是System.Xml.XmlException: The body of the message cannot be read because it is empty
不幸的是,这似乎没有多大帮助。我注意到的另一件事是 serviceMetadata 元素有一个单独的 httpsGetEnabled 属性。我添加了它并将其设置为 true,因为这是一个 https 服务,但结果是一样的。似乎由于某种原因,WCF 没有认识到这是一个元数据请求。