Entity framework 连接到WCF服务的Xamarin PCL在保存时引发System.typeload异常

Entity framework 连接到WCF服务的Xamarin PCL在保存时引发System.typeload异常,entity-framework,wcf,xamarin.forms,portable-class-library,Entity Framework,Wcf,Xamarin.forms,Portable Class Library,我有以下WCF服务合同: [ServiceContract] public interface IGMesDataService { [OperationContract] List<HejMessage> GetHejMessages(); [OperationContract] void SaveHejMessage(HejMessage msg); } xamarin.forms pcl中的代码如下: [DataContract] publi

我有以下WCF服务合同:

[ServiceContract]
public interface IGMesDataService
{
    [OperationContract]
    List<HejMessage> GetHejMessages();

    [OperationContract]
    void SaveHejMessage(HejMessage msg);
}
xamarin.forms pcl中的代码如下:

[DataContract]
public partial class HejMessage
{
    [DataMember]
    public int Id { get; set; }
    [DataMember]
    public string Text { get; set; }
    [DataMember]
    public double Latitude { get; set; }
    [DataMember]
    public double Longitude { get; set; }
}
在应用程序构造函数中:

        GMesDataServiceClient client = new GMesDataServiceClient();
        client.GetHejMessagesCompleted += Client_GetHejMessagesCompleted;
        client.GetHejMessagesAsync();
和事件处理程序:

    private void Client_GetHejMessagesCompleted(object sender, GetHejMessagesCompletedEventArgs e)
    {
        foreach(HejMessage msg in e.Result)
            AllHejMessages.Add(msg);
    }
在“发布消息”按钮上,单击:

    private void PostButton_Clicked(object sender, EventArgs e)
    {
        HejMessage msg = new HejMessage
        {
            Text = "Awesome item",
            Latitude = 100,
            Longitude = 100
        };

        AllHejMessages.Add(msg);
        GMesDataServiceClient client = new GMesDataServiceClient();
        client.SaveHejMessageCompleted += Client_SaveHejMessageCompleted;
        client.SaveHejMessageAsync(msg);
    }
这里完成的事件正好为我捕捉到了一个例外

当我在本地运行wcf服务时,一切都非常顺利。部署服务时,GetHejMessages调用仍然有效,但SaveHejMessage返回以下System.TypeLoadException:

信息:

{"Inheritance security rules violated while overriding member:
      'System.Data.Entity.Utilities.TaskExtensions+CultureAwaiter`1<T>.UnsafeOnCompleted(System.Action)'. 
 Security accessibility of the overriding method must match the security accessibility of the method being overriden."}

有什么想法吗?

您确定要在两侧使用相同的.net版本吗?检查服务器和本地是否安装了相同的.net版本。可能是.net 4.5安装在本地计算机上,而不是服务器上。很好的猜测,但目标.net 4.5.2您是在开发计算机上还是在生产web托管帐户上获得此信息的?我遇到了这个问题,并通过重新发布到我的生产web托管服务器来解决它。另外,我的网络托管公司说他们从头开始重建了我的托管帐户。有关详细信息,请参阅感谢您的评论,如果我记得的话,我通过更改WCF服务的配置文件解决了此问题。我会到处找,看看我是否记得我做过什么。这是一个很难解决的问题,因为它与我的godaddy主机有关
 at System.Data.Entity.Core.Objects.ObjectContext.SaveChangesInternalAsync(SaveOptions options, Boolean executeInExistingTransaction, CancellationToken cancellationToken)\r\n   
 at System.Data.Entity.Core.Objects.ObjectContext.SaveChangesAsync(SaveOptions options, CancellationToken cancellationToken)\r\n   
 at System.Data.Entity.Internal.InternalContext.SaveChangesAsync(CancellationToken cancellationToken)\r\n   
 at System.Data.Entity.Internal.LazyInternalContext.SaveChangesAsync(CancellationToken cancellationToken)\r\n   
 at System.Data.Entity.DbContext.SaveChangesAsync(CancellationToken cancellationToken)\r\n   
 at System.Data.Entity.DbContext.SaveChangesAsync()\r\n   
 at GMesService.GMesDataService.SaveHejMessage(HejMessage msg) in C:\\Users\\Eric\\documents\\visual studio 2015\\Projects\\GMes\\GMesService\\GMesDataService.cs:line 22\r\n   
 at SyncInvokeSaveHejMessage(Object , Object[] , Object[] )\r\n   
 at System.ServiceModel.Dispatcher.SyncMethodInvoker.Invoke(Object instance, Object[] inputs, Object[]& outputs)\r\n   
 at System.ServiceModel.Dispatcher.DispatchOperationRuntime.InvokeBegin(MessageRpc& rpc)\r\n   
 at System.ServiceModel.Dispatcher.ImmutableDispatchRuntime.ProcessMessage5(MessageRpc& rpc)\r\n   
 at System.ServiceModel.Dispatcher.ImmutableDispatchRuntime.ProcessMessage41(MessageRpc& rpc)\r\n   
 at System.ServiceModel.Dispatcher.ImmutableDispatchRuntime.ProcessMessage4(MessageRpc& rpc)\r\n   
 at System.ServiceModel.Dispatcher.ImmutableDispatchRuntime.ProcessMessage31(MessageRpc& rpc)\r\n   
 at System.ServiceModel.Dispatcher.ImmutableDispatchRuntime.ProcessMessage3(MessageRpc& rpc)\r\n   
 at System.ServiceModel.Dispatcher.ImmutableDispatchRuntime.ProcessMessage2(MessageRpc& rpc)\r\n   
 at System.ServiceModel.Dispatcher.ImmutableDispatchRuntime.ProcessMessage11(MessageRpc& rpc)\r\n   
 at System.ServiceModel.Dispatcher.ImmutableDispatchRuntime.ProcessMessage1(MessageRpc& rpc)\r\n   
 at System.ServiceModel.Dispatcher.MessageRpc.Process(Boolean isOperationContextSet)"