我花了最后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和文件系统上访问。我错过了什么吗?
其他一些事情:
提前感谢您的帮助!
答案 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;
}