【发布时间】:2015-02-12 08:27:54
【问题描述】:
这似乎是一个非常简单的问题,但对我来说不是。我正在尝试从 web.config 文件中读取连接字符串。
我有具有 web.config 文件的 WCF 服务应用程序。在 web.config 文件中,我定义了连接字符串。 然后我在默认网站下的IIS7上部署了wcf应用程序(安装IIS7时提供的一个模板)。
现在,当我们读取连接字符串时,它不会给我在 wcf web.config 文件中定义的连接字符串。不知何故,我无法访问它。在调试时,我发现一个连接字符串实际上不是我在 wcf web.config 中定义的连接字符串,但它是我不想要的默认网站连接字符串。
我想访问我只定义了 WCF web.config 文件的连接字符串。我被困在其中。我尝试了所有但没有运气。作为参考,我把我试过的代码和 web.config 代码也放了。
Web.Config 代码。
<configuration>
<system.diagnostics>
<trace>
<listeners>
<add type="Microsoft.WindowsAzure.Diagnostics.DiagnosticMonitorTraceListener, Microsoft.WindowsAzure.Diagnostics, Version=2.4.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35"
name="AzureDiagnostics">
<filter type="" />
</add>
</listeners>
</trace>
</system.diagnostics>
<appSettings>
<add key="ConnString" value=""/>
<!--<add key="ConnString" value=""/>-->
</appSettings>
<connectionStrings/>
<system.web>
<httpRuntime maxRequestLength="2097151"
useFullyQualifiedRedirectUrl="true"
executionTimeout="14400" />
<compilation debug="true" />
</system.web>
读取 connstring 的代码
string connString = string.Empty;
string svcDir = System.Web.Hosting.HostingEnvironment.ApplicationPhysicalPath;
DirectoryInfo rootDir = Directory.GetParent(svcDir);
string root = rootDir.FullName;
string webConfigFilePath = root + "\\Web.config";
ExeConfigurationFileMap fileMap = new ExeConfigurationFileMap();
fileMap.ExeConfigFilename = webConfigFilePath;
Configuration configuration = ConfigurationManager.OpenMappedExeConfiguration(fileMap, ConfigurationUserLevel.None);
var test = configuration.ConnectionStrings.ConnectionStrings;
string connectionString = "";
if (configuration.ConnectionStrings.ConnectionStrings["ConnString"].ConnectionString.Length > 0)
{
connectionString = configuration.ConnectionStrings.ConnectionStrings["ConnString"].ConnectionString;
}
//var connectionString = System.Web.Configuration.WebConfigurationManager.ConnectionStrings["ConnString"];
//if (connectionString != null)
//{
//}
return connString;
我使用的是 .net framework 4.0,IIS 7,apppool 是 .net framework 4.0 和 windows 7 的机器。
谢谢, Awadhendra
【问题讨论】:
-
您是在尝试从 WCF 应用程序外部还是从 WCF 服务代码中读取连接字符串值?
-
在 WCF 服务代码内。
-
您可以尝试使用 System.Configuration.ConfigurationManager.ConnectionStrings["ConnString"].ConnectionString 吗?
-
您将连接字符串放在应用程序设置而不是实际连接字符串部分的任何原因,因为您的代码试图读取连接字符串部分并且那里什么都没有(因此
<connectionStrings />) -
你不应该把你的用户名和密码放在这个网站上,任何人都可以查看它们。
标签: c# wcf iis-7 web-config