将WCF服务部署到本地IIS 10时,Web.config设置不可用

时间:2017-09-18 13:40:23

标签: asp.net wcf iis

我花了最后2个小时试图找到答案,不成功....希望任何人都可以提供帮助。

我创建了一个WCF服务,我将其“部署”到我的本地IIS 10(在Windows 10上)。 通过在IIS管理器中添加新的IIS网站(ASP.NET v4.6.2)来执行此“部署过程”。此IIS站点的物理路径是我的WCF项目的根(SVC和web.config驻留在其中)。

我可以在从SoapUI调用它时调用服务和WSDL,并且executeg在我的服务处理程序方法中的断点处停止。到目前为止,非常好。

虽然没有看到我的web.config发生变化。在调试尝试读取配置值的代码时,我注意到web.config文件的文件路径是:C:\ Windows \ Microsoft.NET \ Framework \ v4.0.30319 \ Config \ web.config。

在我看来,这是我的.NET(运行时)环境的“主”配置。

项目web.config文件在SVC旁边可用,并且每个人都可以在IIS和文件系统上访问。我错过了什么吗?

其他一些事情:

  • 有用于调试和发布的web.config转换;两者都是空的,手动将条目添加到调试版本没有帮助
  • 解决方案中的其他项目之一有app.config,因此该服务也可以作为控制台或Windows服务应用程序运行(两者都有效)

提前感谢您的帮助!

1 个答案:

答案 0 :(得分:0)

我发现了这个问题。这部分是由于我维护了别人的代码而忽略了一些基本的东西。

通过以下代码行读取配置:

Configuration rootWebConfig1 = WebConfigurationManager.OpenWebConfiguration(null);

正如变量名称所示,这将获得根web.config(在.NET运行时文件夹中)。

当我做出以下改变时:

Configuration config = WebConfigurationManager.OpenWebConfiguration("~");

确实看到了我的设置。 Afaik"〜"表示应用程序的根,而不是" /"意味着网站的根源(如果我错了,请纠正我。)

为了完整起见,我在web.config中的设置如下所示:

<appSettings> <add key="someFakeKey" value="someValue" /> </appSettings>

检索设置的整个代码块:

Configuration config = WebConfigurationManager.OpenWebConfiguration("~"); if (config.AppSettings.Settings.Count > 0) { KeyValueConfigurationElement poliskluisServerSetting = config.AppSettings.Settings["someFakeKey"]; if (poliskluisServerSetting != null) _poliskluisserver = poliskluisServerSetting.Value; }