我正在使用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正在运行没有问题,但如果我想选择它会引发异常。
谢谢,我认为这不是一个大问题,但我没有在网上找到任何答案..