Я работаю над веб-службой, используя 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.-> ВСТАВИТЬ, ОБНОВИТЬ И УДАЛИТЬ работают без проблем, но если я хочу ВЫБРАТЬ, это вызывает исключение.
Спасибо, я думаю, что это не огромная проблема, но я не нашел никаких ответов в Интернете..