【问题标题】:How to host WCF in IIS as a sub-application?如何在 IIS 中将 WCF 作为子应用程序托管?
【发布时间】:2018-07-12 04:24:45
【问题描述】:

我有一个带有默认应用程序和沙盒应用程序的网络服务器。我现在想将 WCF 服务发布为每个服务的子应用程序。 例如

  • ://www.mydomain.com/services
  • ://sandbox.mydomain.com/services

在 Visual Studio 中,我已经为 Sandbox 配置了一个发布配置文件

  • 服务器:://myipaddress:8172/msdeploy.axd
  • 站点名称:沙盒/服务目标
  • 网址:://sandbox.mydomain.com/services

一旦发布,该应用程序就可以在沙箱下使用,正如我所期望的那样。但是,我从浏览器收到一般错误:

*运行时错误 描述:处理您的请求时发生异常。此外,在执行第一个异常的自定义错误页面时发生了另一个异常。请求已终止。 查看应用程序事件日志,我发现我有一个配置错误并且应用程序无法加载程序集。在这种情况下,它是 DevExpress 库。 WCF 服务不引用这些库;但是它们被 Sandbox 应用程序引用。 事件日志条目 事件代码:3008 事件消息:发生配置错误。 活动时间:2/1/2018 1:06:06 PM 活动时间(UTC):2/1/2018 6:06:06 PM 事件 ID:54ba6fe939ec46deb0526c36e13579d3 事件顺序:1 事件发生:1 事件详情代码:0

申请信息: 应用域:/LM/W3SVC/2/ROOT/Services-7-131619819656314908 信任级别:完全 应用程序虚拟路径:/Services 应用程序路径:\Sandbox\Services\ 机器名称: 异常信息: 异常类型:ConfigurationErrorsException 异常消息:无法加载文件或程序集 'DevExpress.Web.v16.2, Version=16.2.4.0, Culture=neutral, PublicKeyToken=b88d1754d700e49a' 或其依赖项之一。系统找不到指定的文件。*

我添加了对前几个 Devexpress 库的引用,因为它们出现了。异常只是指向根应用程序中的另一个库。这是不可持续的,两者应该是独立的。

我创建了一个新的应用程序池,认为这是某种继承问题。那没用。

如何防止 WCF 服务加载这些库。并且仍然允许这些服务发布一个子应用程序?

提前致谢

【问题讨论】:

  • 请不要在发布您的问题时大喊大叫。谢谢。

标签: c# asp.net .net wcf iis


【解决方案1】:

我发现了问题的根本原因和解决方案。原因是 IIS 设计的。 Web.Config 文件由子应用程序从其根应用程序继承。为防止这种情况,您可以使用两种机制:

  • 利用<location> 标签并设置inheritInChildApplications 对于您不想继承的部分,属性为 false。你放置 这些标签在您的根应用程序的 web.config 中。

  • 在您的子应用程序中利用 <remove /><clear /> web.config 你想从头开始的地方。

在我的场景中,我在根 web.config 的 system.web 周围放置了 <location> 标签,并在我的子 web.config 中使用 <clear> 标签作为 connectionStrings 和 appSettings

【讨论】:

  • 您好,我遇到了这个问题。你能告诉我如何以及在哪里放置<location> 标签吗?
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2012-10-21
  • 2021-11-04
  • 1970-01-01
  • 2016-07-27
  • 2011-09-03
相关资源
最近更新 更多