C# Asp.Net与WCF服务配置文件问题

C# Asp.Net与WCF服务配置文件问题,c#,asp.net,wcf,configuration,connection-string,C#,Asp.net,Wcf,Configuration,Connection String,我有一个ASP.NETWebForms应用程序(项目1)、一个实体框架数据访问库(项目2)和一个WCF服务库(项目3)。Asp.Net项目有一个*svc文件,它将调用重定向到项目3中相应的WCF服务。我正在使用VS 2012(+其集成服务器)本地调试,因此没有使用IIS。 我遇到了以下问题:如果我使用Project1中的一个页面从EF数据库中获取一些数据,一切正常,但是当我使用远程WCF客户端调用相同的方法时,如果失败了。错误表示找不到数据库的连接字符串。经过调查,我发现如果我从ASP项目调用查

我有一个ASP.NETWebForms应用程序(项目1)、一个实体框架数据访问库(项目2)和一个WCF服务库(项目3)。Asp.Net项目有一个*svc文件,它将调用重定向到项目3中相应的WCF服务。我正在使用VS 2012(+其集成服务器)本地调试,因此没有使用IIS。
我遇到了以下问题:如果我使用Project1中的一个页面从EF数据库中获取一些数据,一切正常,但是当我使用远程WCF客户端调用相同的方法时,如果失败了。错误表示找不到数据库的连接字符串。经过调查,我发现如果我从ASP项目调用查询,则项目1的Web.config文件中的连接字符串使用正确。但是,如果我通过WCF服务调用查询,将使用服务库的App.config(当然不包含任何连接字符串)。
到目前为止,我认为.NET不支持DLL的分段配置文件(这就是为什么必须将端点/服务配置元素从service App.config复制到ASp.NET Web.config文件的原因)。
那么,有人知道如何让我的服务使用Web.config,而不是它自己的App.config,它无论如何都不应该使用它吗

编辑:添加了*svc文件和服务接口+服务实现的代码

SimulatorWcfServices.svc(项目1:主要的ASP.Net Web应用程序):

<%@ ServiceHost Language="C#" Debug="true" Service="Blub.SimulatorWcfServices.DataExchangeService" %>

IDataExchangeService.cs(项目3:SimulatorWcfServices服务库)

[服务合同]
公共接口IDataExchange服务
{
[经营合同]
IDictionary GetData();
}
DataExchangeService.cs(项目3:SimulatorWcfServices服务库)

[AspNetCompatibilityRequirements(RequirementsMode=AspNetCompatibilityRequirementsMode.Allowed]
公共类DataExchangeService:IDataExchangeService
{
公共IDictionary GetData()
{
返回新的DataAccessImplementation.DataDAO().GetAllData();//对项目2的调用
}
}

我通过将用于调试的Web服务器从“本地IIS Web服务器”切换到“Visual Studio开发服务器”(项目-->属性-->Web-->服务器),解决了这个问题。所以基本上我降低了旧服务器的等级。现在,它使用正确的配置文件,程序集似乎以正确的顺序加载,而不仅仅是部分加载。

删除app.configWCF使用Web.Config。将您的连接字符串复制到它们中。@tmckown McKeown:如果我这样做,服务将根本无法工作,因为它不知道自己的配置。它似乎是从服务DLL中的App.config获取其整个配置。甘达雷斯:我的全部问题是WCF服务没有使用Web.config…那么这个服务没有被编码为.svc Web资源,或者你正在专门寻找这个配置。我不知道“.svc Web资源”是什么;所以我添加了我的代码来澄清。。。
  [ServiceContract]
    public interface IDataExchangeService
    {
        [OperationContract]
        IDictionary<string,string> GetData();
    }
 [AspNetCompatibilityRequirements(RequirementsMode = AspNetCompatibilityRequirementsMode.Allowed)]
    public class DataExchangeService : IDataExchangeService
    {
        public IDictionary<string, string> GetData()
        {
            return new DataAccessImplementation.DataDAO().GetAllData(); //call to project 2
        }
    }