WCF с EntityFramework - «System.ServiceModel.CommunicationException» - PullRequest
0 голосов
/ 13 июня 2018

Я работаю над веб-службой, используя WCF и EntityFrameWork, а также объект под названием «TestsAuto».Я использую WebForm для связи с моей локальной базой данных.

У меня нет проблем с выполнением INSERT, DELETE или UPDATE (отправка TestsAuto из моей веб-формы ASP.NET методу службы, который взаимодействует с моей БД.Но запрос моей БД для отображения результатов в веб-форме вызывает исключение, и я совсем не понимаю, почему ... Может быть, это проблема с сериализацией, я также слышал о 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 с 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);


    }

Пошаговое руководство: -> Я создал службу WCF с кодом выше.-> Я создал модель с EF - DataFirst.-> Я создал простую веб-форму, чтобы попробовать операции CRUD, и я добавил ServiceReference.-> ВСТАВИТЬ, ОБНОВИТЬ И УДАЛИТЬ работают без проблем, но если я хочу ВЫБРАТЬ, это вызывает исключение.

Спасибо, я думаю, что это не огромная проблема, но я не нашел никаких ответов в Интернете..

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...