0

我试图在同一台服务器上托管同一 WCF 服务的两个版本。所讨论的两个服务程序集具有相同的版本号,并且仅在内容上有所不同。但是,它们位于两个不同的物理位置,由两个独立的 IIS 站点中的两个独立(但名称相同)虚拟目录指向。每个站点都绑定到一个不同的主机名,并且我当前正在测试的应用程序配置为将请求发送到正确的主机(我正在使用 hosts 文件覆盖域名解析。)此外,托管此服务的每个站点使用单独(但配置相同)的应用程序池。

我认为所有这些措施都足以消除 IIS 在向特定端点 URL 发送请求时尝试执行哪个程序集的任何可能混淆。但是,对第二个站点的请求继续由第一个站点指向的程序集版本处理。我的 Visual Studio 调试会话附加到当前运行的每个 w3wp.exe 实例,这消除了我调试错误应用程序池的可能性。当我为每个版本的服务提取源代码文件时,两个文件中的断点都表明符号已加载并且它们将被命中(尽管在我关闭 IIS 并删除临时 ASP.Net 文件后,这发生了变化服务。)

更奇怪的是,我正在使用相同的方案成功运行和调试同一个 Web 应用程序的两个版本,并且一切正常。唯一的区别似乎是一对虚拟目录托管 Web 应用程序,而另一对虚拟目录托管 WCF 服务。

当我查看模块面板时,它表明正在加载的程序集版本来自临时 ASP.NET 文件夹。

谁能解释为什么 IIS 加载了错误版本的程序集?它与临时 ASP.Net 文件夹中的缓存有关吗?

4

1 回答 1

0

为了确认正确的端点被命中,我关闭了第一个站点并再次尝试了请求。我收到的异常清楚地表明第二个站点的端点没有被命中。

现在,我只需要弄清楚为什么项目的 web.config 中的端点元素被忽略,而使用 machine.config 中定义的端点。

于 2016-06-28T23:31:56.520 回答