【发布时间】:2013-08-07 10:30:16
【问题描述】:
我有一个 wcf 应用程序,我在其中使用了实体框架并实现了 dbContext 来查询数据库。 当我在浏览器中查看 svc 文件时,它会公开操作。
我有这样的接口类:
[ServiceContract]
public interface IService1
{
[OperationContract]
List<BooksModels> GetBooksList();
[OperationContract]
BooksModels GetBook(int id);
}
我在 svc.cs 文件中有这样的实现
public List<BooksModels> GetBooksList()
{
MVCEntity en = new MVCEntity();
return en.book.ToList();
}
public int GetBookId(int id)
{
//return db.book.Find(id);
return 1;
}
而 BooksModels 类是这样的
[DataContract]
public class BooksModels
{
[Key]
[DataMember]
public int BookId { get; set; }
[DataMember]
public string BookName{get;set;}
}
并将配置文件设置为创建 wcf 服务应用程序时创建的默认配置文件。
但是当我从 MVC wcf 客户端调用 GetBooksList 服务时,它给了我以下错误:
调用服务失败。可能原因:服务离线 或无法访问;客户端配置不匹配 代理;现有代理无效。请参阅堆栈跟踪 更多详情。您可以尝试通过启动新代理来恢复,恢复 到默认配置,或者刷新服务。
但是当我调用返回 1 的第二种方法时。
我检查了当服务使用 dbContext 返回数据时,它会给出错误并且 没有的时候就好了。
我浏览了各种博客以及 stackoverflow 中的问题,但没有帮助。 那么如何解决这个问题。 谢谢
【问题讨论】:
-
你试过调试你的
GetBooksList()方法吗? -
您是否尝试过使用WCF Test Client 直接与您的 WCF 服务通信?
-
@lazyberezovsky 是的,如果该方法在控制器中未作为服务调用,则该方法可以正常工作。
-
@Veleous 是的,我已经用 WCF 测试客户端对其进行了测试,使用第二种方法测试很好,但第一种方法会出错。
-
@ElAmorZeewon - 你是如何实现你的服务代理的,你能提供一些代码吗?
标签: c# wcf entity-framework asp.net-mvc-4 dbcontext