gpt4 book ai didi

.net - WinRT中的WCF客户端击中SocketError.AccessDenied(但与Fiddler一起捕获流量)

转载 作者:行者123 更新时间:2023-12-02 11:16:49 25 4
gpt4 key购买 nike

我正在将可在.NET 3.5+中运行的.NET应用程序移植到WinRT,并且它包括一个WCF服务客户端(以编程方式使用ChannelFactory<T>创建),该客户端几乎与所有共享其代码(即,我可以完全相同)。该程序的原始版本。可通过端口9443上的SSL访问该服务,并使用Windows身份验证。代码的原始版本可以正常工作,但是WinRT端口通常会失败,并带有三层的异常三明治:我得到一个EndpointNotFoundException(“没有端点在https:// ...侦听”) WebException(“无法连接到远程服务器”)的例外,内部例外是SocketException(“尝试以其访问权限192.168.xx:9443禁止的方式访问套接字”)。

奇怪的是,除非我让Fiddler充当代理并捕获流量,否则这将始终失败。

现在,更多细节。


SSL证书来自受信任的权威机构,有效并且涵盖了附加到我的IIS站点的主机标头名称(仅该名称)。
我可以浏览至.svc文件及其?wsdl,而不会出现任何错误,而wsdl本身会报告我从应用程序中使用的确切URL。
有问题的站点具有针对9443上的https和针对9999上的http的绑定(都具有与之关联的主机头名称)
我在网站根目录中有以下clientaccesspolicy.xml,可以通过相应的端口通过http和https进行访问:

<?xml version="1.0" encoding="utf-8"?>
<access-policy>
<cross-domain-access>
<policy>
<allow-from http-request-headers="*">
<domain uri="*" />
</allow-from>
<grant-to>
<resource path="/" include-subpaths="true"/>
</grant-to>
</policy>
</cross-domain-access>
</access-policy>

运行服务的服务帐户具有与其关联的UPN,因为有人建议这样做可能会有所帮助。我尝试将其放入端点 <servicePrincipalName/><identity />中,但无济于事。使用 <dns />也没有帮助。
绑定是 BasicHttpBindingBasicHttpSecurityMode.Transport,并且我正在设置 ClientCredentialType = HttpClientCredentialType.Windows。凭据当前已硬编码且正确。但我认为这不是问题所在,因为...
我可以循环设置服务调用,并观察它失败,失败,失败和失败,直到我将Alt + Tab转到Fiddler并开始捕获流量。据我了解,这将通过Fiddler的本地代理重定向服务调用,无论出于何种原因,这都能使其正常工作-我什至无需重新启动程序,更不用说重新编译程序了。
无论是否选择解码SSL会话,无论我是否将Fiddler的中间人证书都安装为受信任证书,这都是相同的。
当我与Fiddler一起执行此操作时,看到的流量对我来说并不是特别有意义。看起来像是标准的协商握手,带有HTTP 401错误,此后连接成功。
IIS是版本7。日志(在inetpub \ logs中)似乎没有显示任何有趣的东西-实际上,除非一切正常,除非附加了Fiddler,否则我似乎从未在其中看到任何东西。
我尝试使用Wireshark来嗅出这一点,但结果对我来说基本上没有用。直到我开始在Fiddler中捕捉东西,Wireshark似乎都没有捡到任何东西,然后我得到了访问量,但是我不知道我是否只是看错了。
尝试使用“添加服务参考”添加标准的Visual Studio代理会导致行为与我的自定义代码完全相同。
只是为了踢一下,看看WinRT是否像Silverlight一样在端口上有未发布的限制,我将站点设置在端口4505上(落入4502-4534范围内)。没有改变。
清除Internet选项中的缓存和cookie似乎无关紧要。
Windows防火墙已关闭。 Windows 8是否还有其他可能的流量障碍? (这并不重要,因为桌面应用程序始终可以正常工作。)
Windows Defender实时保护已关闭。
即使我在模拟器上运行该应用程序,其行为也相同。我无法在另一台物理计算机上进行测试,因为这是Windows 8的唯一开发安装。


希望这表明我已经对此进行了尽职调查。我错过了什么?请让我知道是否可以提供更多信息。

最佳答案

您是否已在清单中为应用程序设置了Intranet / Internet网络访问权限?

关于.net - WinRT中的WCF客户端击中SocketError.AccessDenied(但与Fiddler一起捕获流量),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12506856/

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