【发布时间】:2014-07-30 13:08:31
【问题描述】:
我有一个 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 Application):
<%@ 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
}
}
【问题讨论】:
-
删除app.config
-
WCF 使用 Web.config。将您的连接字符串复制到其中。
-
@TMcKeown McKeown:如果我这样做,服务根本无法工作,因为它不知道自己的配置。它似乎是从服务 DLL 中的 App.config 获取其整个配置。 Gandarez:我的整个问题是 WCF 服务不使用 Web.config...
-
那么此服务未编码为 .svc Web 资源,或者您正在专门寻找该配置。
-
我不知道什么是“.svc 网络资源”;所以我添加了我的代码以进行澄清......
标签: c# asp.net wcf configuration connection-string