WCF单一方法不会被调用

时间:2018-05-18 08:29:39

标签: wcf azure-mobile-services service-reference

这很疯狂:我在VS2017中通过ServiceReference.Service1使用WCF客户端,如下所示: 网页(CSHTML5)=> SOAP-Request(WebClient)=>服务器正在调用Azure Mobile Service =>获取数据返回/写入等。

这适用于6/7方法(一些添加项目,一些获取项目)但是当我调用"删除"方法调用没有到达服务器并退出并显示错误(500)。

Java Debugger讨论" SystemArgumentException:year"

所以我在localhost上运行WCF服务进行调试,每个方法断点都可以工作,但是在任何时候我都不需要调用DeleteMethod。

这是我的操作合同:

 [ServiceContract]
public interface IService1
{
    [OperationContract]
    List<Tour> GetTours(string _companyid);

    [OperationContract]
    void AddOrUpdateTour(Tour tour);

    [OperationContract]
    void DeleteTour(Tour tour);

    [OperationContract]
    bool CompanyLogin(Company company);

    [OperationContract]
    void AddCompany(Company company);

    [OperationContract]
    Company GetCompany(Company company);

    [OperationContract]
    void UpdateCompany(Company company);
}

我的Service1课程:

 public class Service1 : IService1
{

    AzureDataService azureService;


    public Service1()
    {
        ServicePointManager.SecurityProtocol = SecurityProtocolType.Tls12 | SecurityProtocolType.Tls11 | SecurityProtocolType.Tls | SecurityProtocolType.Ssl3;

        azureService = new AzureDataService();
    }



    public List<Tour> GetTours(string _companyid)
    {
        var alletouren = azureService.GetAlleTouren(_companyid).Result;

        return alletouren.Where(e => e.Deleted == false).ToList();
    }

    public async void AddOrUpdateTour(Tour tour)
    {
        await azureService.AddTour(tour);
    }

    public async void DeleteTour(Tour tour)
    {
        await azureService.DeleteTour(tour);
    }

    public bool CompanyLogin(Company company)
    {
        return azureService.CheckCompanyAuth(company).Result;
    }

    public async void AddCompany(Company company)
    {
        await azureService.AddCompany(company);
    }

    public Company GetCompany(Company company)
    {
        return azureService.GetCompany(company).Result;
    }

    public async void UpdateCompany(Company company)
    {
        await azureService.UpdateCompany(company);
    }
}

这样我在客户端代码中使用该方法:

ServiceReference1.Service1Client soapClient = new ServiceReference1.Service1Client();
                    foreach (var item in SelectedDoneTourDetail)
                    {
                        soapClient.DeleteTour(item);
                    }

此用法直接导致异常(500)。

请有人帮忙吗?

谢谢!

修改

我已经删除了[AzureVersion]属性,但没有区别。

这是我参考WCF服务时使用的课程。我不会在客户端声明它:

[DataContract]
public class Tour
{

    [JsonProperty(PropertyName = "id")]
    [DataMember]
    public string Id { get; set; }

    [JsonProperty(PropertyName = "deleted")]
    [DataMember]
    public bool Deleted { get; set; }

    [DataMember]
    public string CompanyID { get; set; }

    [DataMember]
    public string TourID { get; set; }

    [DataMember]
    public string FahrerID { get; set; }

    [DataMember]
    public int Reihenfolge { get; set; }

    [DataMember]
    public string Bezeichnung { get; set; }

    [JsonProperty(PropertyName = "Strasse")]
    [DataMember]
    public string Strasse { get; set; }

    [DataMember]
    public string Hausnummer { get; set; }

    [DataMember]
    public string PLZ { get; set; }

    [DataMember]
    public string Ort { get; set; }

    [DataMember]
    public string Notiz { get; set; }

    [DataMember]
    public string GeoPoint { get; set; }

    [DataMember]
    public DateTime AbfahrtZeitUser { get; set; }

    [DataMember]
    public string AbfahrtGeoPoint { get; set; }

    [DataMember]
    public DateTime AbfahrtZeitClient { get; set; }

    [DataMember]
    public DateTime AnkunftZeitClient { get; set; }

    [DataMember]
    public bool Done { get; set; }

    [DataMember]
    public double Distance { get; set; }

    [DataMember]
    public bool IsExported { get; set; }


}

修改 我没有弄清楚序列化的真正问题,并通过遵循解决方法(可能这有助于其他用户)而不知道最佳实践但现在可行的方法来跳过此问题:

我改变了我的删除&#39;删除方法(string itemid)。现在调用WCF服务并接收我的项目的ID。 Azure移动服务具有&#39; lookupasync&#39;搜索id的方法。最后,它按id删除请求的对象/记录。如果没有id,我会添加一个空检查和一个解决方法,但现在它可以工作。

0 个答案:

没有答案