带有EntityFramework的WCF - “System.ServiceModel.CommunicationException”

时间:2018-06-13 07:44:04

标签: c# database entity-framework web-services wcf

我正在使用WCF和EntityFrameWork以及名为“TestsAuto”的对象处理Web服务。我正在使用WebForm与我的本地数据库进行通信。

我没有问题进行INSERT,DELETE或UPDATE(从我的ASP.NET Web窗体发送TestsAuto到服务的方法,该方法与我的数据库进行交互。但是查询我的数据库以在Webform上显示结果会引发异常,我根本不明白为什么..也许这是一个序列化问题,我也听说过DataContract和DataMember,但我真的需要专家的意见......;)我是这些技术的初学者。

这是例外(我是法国人):

Une exception de type 'System.ServiceModel.CommunicationException' s'est 
produite dans mscorlib.dll mais n'a pas été gérée dans le code utilisateur

Informations supplémentaires : Une erreur s'est produite lors de la réception 
de la réponse HTTP à http://localhost:13939/ServiceTA.svc. La raison peut en 
être que la liaison de point de terminaison de service n'utilise pas le 
protocole HTTP. Cela peut également être dû au fait qu'un contexte de requête 
HTTP a été ignoré par le serveur.

以下是我的代码的一些示例:

TestsAuto类(由Entity with DataFirst生成):

using System;
using System.Collections.Generic;

public partial class TestsAuto
{
    [System.Diagnostics.CodeAnalysis.SuppressMessage("Microsoft.Usage", "CA2214:DoNotCallOverridableMethodsInConstructors")]
    public TestsAuto()
    {
        this.Resultats = new HashSet<Resultat>();
    }

    public int testid { get; set; }
    public string nom { get; set; }
    public string perimetre { get; set; }
    public string si { get; set; }
    public string intorrec { get; set; }

    [System.Diagnostics.CodeAnalysis.SuppressMessage("Microsoft.Usage", "CA2227:CollectionPropertiesShouldBeReadOnly")]
    public virtual ICollection<Resultat> Resultats { get; set; }

我的界面和具体方法的实现:

using System;
using System.Collections.Generic;
using System.Linq;
using System.Runtime.Serialization;
using System.ServiceModel;
using System.Text;

namespace WcfService1
{
[ServiceContract]
public interface IServiceTA
{
    [OperationContract]
    void insertTA(TestsAuto ta);
    [OperationContract]
    void insertRes(Resultat res);
    [OperationContract]
    void insertCom(Commentaire com);
    [OperationContract]
    void insertParam(Param param);



    [OperationContract]
    void updateTA(TestsAuto ta);
    [OperationContract]
    int updateRes(Resultat res);
    [OperationContract]
    int updateCom(Commentaire com);
    [OperationContract]
    int updateParam(Param param);



    [OperationContract]
    void deleteTA(TestsAuto ta);
    [OperationContract]
    int deleteRes(Resultat res);
    [OperationContract]
    int deleteCom(Commentaire com);
    [OperationContract]
    int deleteParam(Param param);

    [OperationContract]
    TestsAuto findTA(int id);
    [OperationContract]
    TestsAuto findRes(int id);
    [OperationContract]
    TestsAuto findCom(int id);

    [OperationContract]
    List<TestsAuto> listTA();
    [OperationContract]
    List<Resultat> listRes();
    [OperationContract]
    List<Commentaire> listCom();
    [OperationContract]
    List<Param> listParam();


  }
}

方法:

    public TestsAuto findTA(int id)
    {
        return tee.TestsAutoes.Single(p => p.testid == id);
    }

WebForm的代码:

    protected void btnSelect_Click(object sender, EventArgs e)
    {
        ServiceTAClient client = new ServiceTAClient();

        TestsAuto taa = client.findTA(20);


    }

循序渐进: - &GT;我用上面的代码创建了WCF服务。 - &GT;我用EF-DataFirst创建了一个模型。 - &GT;我创建了一个简单的webform来尝试CRUD操作,并添加了ServiceReference。 - &GT; INSERT,UPDATE和DELETE正在运行没有问题,但如果我想选择它会引发异常。

谢谢,我认为这不是一个大问题,但我没有在网上找到任何答案..

0 个答案:

没有答案