Entity framework 连接到WCF服务的Xamarin PCL在保存时引发System.typeload异常
我有以下WCF服务合同: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
[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)"