English 中文(简体)
System.Net.Sockets在查找WCF服务时如何执行DNS查找? 系统.Net.Sockets如何在查找WCF服务时执行其DNS查询?
原标题:
  • 时间:2009-02-19 08:39:56
  •  标签:

我有一个Web应用程序和一个WCF服务托管在同一个Windows 2003开发服务器上。它们各自有自己的IIS网站节点,分别响应drs.displayscreen.web和drs.displayscreen.service主机标头。hosts文件包含指向127.0.0.1的两个标头的条目。网站具有对drs.displayscreen.service的服务引用。

当应用程序池使用网络服务帐户时,两个应用程序都可以完美运行。

我需要在服务的后台执行一些COM处理,因此我想在自定义的身份下运行应用程序。两个站点都在新的应用程序池中运行。

When I change the application pool identity to use a new windows account created for the purpose, I get the following (inner) exception: [EndpointNotFoundException: Could not connect to http://drs.displayscreen.service/Handler.svc. TCP error code 10060: A connection attempt failed because the connected party did not properly respond after a period of time, or established connection failed because connected host has failed to respond 192.168.98.2:8080. ]

192.168.98.2:8080是一个不再使用的DNS服务器的地址。在解决方案中没有被引用。ipconfig中也没有被引用过。

我已经确保新帐户是IIS_WPG的成员,并运行了aspnet_regiis -ga。我还特别授予了该帐户读取hosts文件的权限。

为什么应用程序尝试使用已废弃的DNS服务器来解决临时网址(drs.displayscreen.service),而不是主机文件条目?这一定是某种权限问题,因为在网络服务帐户下运行时没有这个问题。 帮帮我!!

最佳回答

嗯,这似乎涉及到.Net框架中的错误。我找到了一篇博客文章,它让我意识到MS .Net实现的SocketCache.GetSocket可能会缓存无效的套接字,还找到了另一篇推荐通过明确禁用代理配置设置来实现的解决方法/黑科技。

在出现问题的环境中,我们实际上并没有使用代理服务器,但是当 don t-use-proxies 设置生效时,SocketCache.GetSocket 被覆盖或者表现出不同的行为。奇怪的是,移除该设置会导致问题再次出现,因此显然在发现并成功使用有效的 IP/主机名时,SocketCache 并没有得到修复。根据以上第一篇帖子的作者所说的,这个缺陷在 Mono 中不存在。 :)

问题回答

暂无回答




相关问题
热门标签