我有一个简单的WCF服务,自托管和.net客户端。我正在使用svcutil生成代理。当我将代理添加到客户端时,它要求我添加System.ServiceModel.dll。好吧,我可以添加它,因为它是一个测试场景,我在.Net平台上工作。
但是,假设我使用的是不支持.Net的机器,该平台将如何补偿System.ServiceModel?
请你点亮一下吗?
编辑:我有点想法。如果我正在创建WCF客户端,我需要添加ServiceModel。为了测试它,我添加了一个ASMX客户端(添加Web引用)。我的服务方法不接受任何参数。但是我在客户端中遇到错误,要求我输入结果,输出bool ResultSpecified。你能解释为什么?编辑:能否请您指出一个例子 - 如何以及在“DataContractSerializer”上设置的内容
由于
Lijo
答案 0 :(得分:2)
奇怪的问题。如果客户端不是.NET应用程序,则显然不需要System.ServiceModel
。可以使用应用程序使用的任何语言使用任何其他SOAP库来编写客户端。
答案 1 :(得分:1)
它会通过抛出异常来弥补。您需要安装.NET框架来运行.NET应用程序。对于跨平台,您可以查看Mono。
抱歉,我误解了你的问题。如果使用basicHttpBinding公开端点,任何符合WS-I Basic Profile 1.1的客户端都可以毫无问题地使用Web服务。这是最具互操作性的绑定。
答案 2 :(得分:1)
答案 3 :(得分:1)
我认为这里有两个问题:
如果您是自托管服务,但是您希望不使用.NET构建的客户端可以访问它,那么您可能应该考虑在IIS中托管它。或者,您需要确保您的托管应用程序还包含元数据绑定(MEX),以便非.NET平台可以访问WSDL。
如果您正在构建非.NET客户端,那么您将使用一组工具或该平台的框架。在这种情况下,您可以使用不同的工具从WSDL为您的服务创建代理。
希望有所帮助。
答案 4 :(得分:1)
要消除对Web服务代理中生成的两个输出参数的需要,请使用操作合同中的[XmlSerializerFormat]
属性。重新生成代理后,方法签名应与您的定义匹配,而不是将返回类型转换为数据类型“Result”和“ResultSpecified”,指示返回变量是否存在。