【发布时间】:2014-10-31 04:07:30
【问题描述】:
我必须连接到不响应 svcutil 的 WCF 服务,并且不允许我使用 Visual Studio 中的自动化工具创建服务引用 - 编写/托管 WCF 服务的人非常安全有意识,并且禁用了这些功能(为什么,我不知道)。
我只得到了配置数据。
我的问题是:开发可以向该服务发送 WCF 请求的客户端的下一步是什么?
很抱歉这个开放式问题......我真的很难过,因为这不适合我在在线教程或 TechNet 文档中找到的任何场景。而且我是 WCF 的新手,所以我不知道从哪里开始。
返回类型是键/值对可访问的数据集,但我不确定 C# 数据类型是什么。我得到的文档说 KeyValueOfstringPropertyDto3azeXyb8 之类的。提到了 EntityDto,但我对此并不熟悉(EntityFramework 术语?)。我已获得返回数据集中的列列表,但出于安全原因,我无法直接在问题中发布列名。
服务名称和绑定:
名称 : RecordFindSingle
网址:http://Server01/RecordFindSingle/RecordFindSingle.svc
方法:FindSingleRecord
参数1:来源
参数2:记录编号
<configuration>
<system.serviceModel>
<bindings>
<basicHttpBinding>
<binding name="BasicHttpBinding_ITwoWayAsync" maxReceivedMessageSize="2147483647">
<security mode="TransportCredentialOnly">
<transport clientCredentialType="Windows" />
<message clientCredentialType="Username" />
</security>
</binding>
</basicHttpBinding>
</bindings>
<client>
<endpoint address="http://Server02/RecordFindSingle/RecordFindSingle.svc"
binding="basicHttpBinding" bindingConfiguration="BasicHttpBinding_ITwoWayAsync"
contract="RecordFindSingle.RecordFindSingle" name="BasicHttpBinding_ITwoWayAsync" />
</client>
</system.serviceModel>
</configuration>
【问题讨论】:
-
“已禁用这些功能(为什么,我不知道)” - 您将这个问题的答案放在句子的第一部分:“编写/托管 WCF 服务的人是非常有安全意识”。乍一看,他们似乎禁用了 WSDL 的发布,这将阻止其他方通过简单地通过 URL 引用 WSDL 来创建代理。我会问他们是否可以为您提供 WSDL - 如果可以,您可以使用 add reference 或 svcutil 来生成代理。
-
@Tim 有道理。如果有安全隐患,他们不会为我改变任何政策——即使是暂时的。正如我所提到的,我找不到任何好的教程来展示如何仅使用此信息将客户端连接到服务。如果您愿意提供一个简短的代码示例作为答案,可以让我朝着正确的方向前进,我会接受这个答案。我整天都在阅读 HttpWebRequest ,但我仍然完全不知道它是如何发挥作用的...... :( Microsoft 文档失败。
-
只有一个配置文件,如果可能的话,它可能会很棘手。让我炒一会,看看我的想法。
-
你知道
FindSingleRecord的参数和返回类型吗? -
@brz 我刚刚编辑了我的问题以包含输入参数。返回类型是可通过键/值对访问的数据集,但我不确定 .NET 数据类型是什么。它说类似 KeyValueOfstringPropertyDto3azeXyb8。我已获得返回数据集中的列列表,但出于安全原因,我无法直接在问题中发布列名。
标签: c# wcf web-config app-config