【问题标题】:Why is IIS7 Loading Wrong WCF Service Assembly for Endpoint?为什么 IIS7 为 Endpoint 加载错误的 WCF 服务程序集?
【发布时间】:2016-06-28 23:01:04
【问题描述】:

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

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

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

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

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

【问题讨论】:

    标签: c# asp.net wcf iis temporary-asp.net-files


    【解决方案1】:

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

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

    【讨论】:

    • 这不是答案 - 您应该编辑您的问题并将此信息添加到其中,而不是将其作为答案。
    • 这是一个答案:调用了错误的端点。我最初问的问题不再相关。
    • @Tim 我应该问一个单独的问题(假设尚未回答)还是应该只更新此问题的标题和内容(再次假设尚未回答?)我正在考虑其他任何可能尝试在同一服务器上托管同一应用程序的两个版本的人,他们可能不会搜索有关端点配置的内容。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-12-25
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多