我有一个ASP.Net Web窗体应用程序(项目1),一个实体框架数据访问库(项目2)和一个WCF服务库(项目3)。 Asp.Net项目有一个* svc文件,可以将调用重定向到项目3中相应的WCF服务。我正在使用VS 2012(+它的集成服务器)调试本地,因此不使用IIS。登记/>
我遇到了以下问题:如果我使用项目1中的页面从EF数据库获取一些数据,一切正常,但当我使用远程WCF客户端调用相同的方法时,如果失败。该错误表示无法找到数据库的连接字符串。经过调查,我发现如果我从ASP项目调用查询,则正确使用位于项目1的Web.config文件中的连接字符串。但是,如果我通过WCF服务调用查询,则使用服务库的App.config(当然,它不包含任何连接字符串)。
到目前为止,我认为.NET不支持DLL的碎片配置文件(这就是为什么必须将端点/服务配置元素从服务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服务库)
[ServiceContract]
public interface IDataExchangeService
{
[OperationContract]
IDictionary<string,string> GetData();
}
DataExchangeService.cs(项目3:SimulatorWcfServices服务库)
[AspNetCompatibilityRequirements(RequirementsMode = AspNetCompatibilityRequirementsMode.Allowed)]
public class DataExchangeService : IDataExchangeService
{
public IDictionary<string, string> GetData()
{
return new DataAccessImplementation.DataDAO().GetAllData(); //call to project 2
}
}
答案 0 :(得分:0)
我通过将用于调试的网络服务器从“本地IIS Web服务器”切换到“Visual Studio开发服务器”(项目 - &gt;属性 - &gt; Web - &gt;服务器)解决了这个问题。所以基本上我降级了用过的服务器。现在它使用正确的Config文件,并且程序集似乎按正确的顺序加载,而不仅仅是部分加载。