Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/EmptyTag/147.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
使用WCF服务是否需要使用代理?_Wcf - Fatal编程技术网

使用WCF服务是否需要使用代理?

使用WCF服务是否需要使用代理?,wcf,Wcf,我有一个WCF服务,我希望我的客户端能够在不通过代理的情况下从IIS使用该服务。客户端正在使用htc行为使用vbscript中的asmx服务: <div id="oWSInterop" style="behavior:url(webservice.htc)"></div> oWSInterop.useService "http://localhost/WSInteroperability.asmx", "WSInteroperability" Set response

我有一个WCF服务,我希望我的客户端能够在不通过代理的情况下从IIS使用该服务。客户端正在使用htc行为使用vbscript中的asmx服务:

<div id="oWSInterop" style="behavior:url(webservice.htc)"></div>

oWSInterop.useService "http://localhost/WSInteroperability.asmx", "WSInteroperability"

Set response = oWSInterop.WSInteroperability.callServiceSync("BuildSingleDoc", 1002, 19499, XMLEncode(sAdditionalDetail))

oWSInterop.useService“http://localhost/WSInteroperability.asmx,“WSB互操作性”
Set response=oWSInterop.WSInteroperability.callServiceSync(“BuildSingleDoc”,100219499,XMLEncode(sAdditionalDetail))

因此,基本上我只想在现有客户机上进行尽可能少的更改来实现这一点。在使用WCF服务时,我是否被迫使用代理(即客户端上公开WCF服务中的操作的类)?我确实了解代理的好处,也不反对在大多数其他客户端实现中使用代理,但在这种情况下,我不确定自己是否有时间在客户端上处理它-我只希望它能像以前那样工作,只改变端点。

你看到了什么?是什么让你感谢代理是个问题?如果这是服务器端代码,它应该使用浏览器设置(WinINet),这应该可以正常工作。也许“localhost”会成为一个问题,因为对于客户端来说,这仍然意味着“与自己交谈”(即,不是服务器)


如果这是服务器端,您可能需要适当地配置WinHTTP;特别是,要跳过本地地址的代理。当然,“localhost”无论如何都应该回圈…

调用服务的客户端代理类

是的,您肯定需要它(除非您使用基于REST的WCF服务,您可以单独使用HttpClient调用这些服务)——这就是整个WCF运行时的所在,并发挥了它的魔力

如果您想调用基于REST的服务,您可以在不使用任何代理的情况下完成这项工作,但接下来您需要自己进行XML或JSON解析。这是可以做到的,但可能不是一个好主意


代理有什么问题??它实际上只是一个小包装器,将您的调用打包成一条序列化消息并发送到服务器端。在我看来,没什么大不了的。…

是否可能与“代理”一词混淆?这个意义上的代理不是HTTP代理;它是客户端上代表服务的一个类。是的,您是正确的-在原始帖子中进行了编辑以反映这一点。相关:从VBScript调用WCF服务不太确定。您可以在不使用代理类的情况下调用服务,但必须“手动”构造消息,并且需要类似地展开响应。这是可能的,但并不令人愉快,通常不建议这样做,除非您需要极大的灵活性。@cheeso:好的,您是对的-从理论上讲,您可以在没有客户端代理的情况下调用WCF服务。但我想说,这相当“深奥”,不太可能,也不太容易做到……我不想在这里停留,因为现有的调用是asmx,因此基于soap的我希望继续使用相同的格式。我同意,调用WCF服务(或任何基于soap的Web服务)要困难得多不使用工具生成的代理类。但是有可能!请参阅从VBScript@Cheeso:Sweet调用WCF服务,我将在另一篇文章中查看该代码示例,看看是否可以从VBScript调用它。其中一个要求就是——从(浏览器)客户端而不是服务器端代码进行调用。这是客户端代码——不能从后台代码进行调用。当我尝试调用与调用asmx相同的服务时,我得到“无效活动端口”。