【发布时间】:2011-12-19 18:39:26
【问题描述】:
我问是因为连接到本地开发数据库的单元测试使用 Guid 没有问题,但是当我通过 WCF 服务使用相同的方法时,它会失败并出现以下异常:
System.Data.EntityCommandExecutionException
我已阅读 WCF 将 Guid 转换为字符串。我的确切情况是这样的:
代理 -> 使用 Guid 传递对象
服务
服务 -> 将带有 Guid 的对象传回代理
这是从 Web 应用程序测试 WCF 服务时的错误:
[FaultException`1:执行命令定义时发生错误。有关详细信息,请参阅内部异常。] System.Runtime.Remoting.Proxies.RealProxy.HandleReturnMessage(IMessage reqMsg, IMessage retMsg) +9456095 System.Runtime.Remoting.Proxies.RealProxy.PrivateInvoke(MessageData& msgData, Int32 类型) +345 BusinessServices.NGIT.ServiceContracts.IIssueTrackerService.CreateIssue(CreateIssueRequest 请求) +0 D:\NextGenIssueTracker\branches\2011Updates\NextGenIssueTracker.Proxies\Proxies\IssueTrackerProxy.cs:25 中的 NGIT.Proxies.c__DisplayClass1.b__0(IIssueTrackerService s) D:\NextGenIssueTracker\branches\2011Updates\NextGenIssueTracker.Proxies\Helpers\UseServiceFunction.cs:26 中的 NGIT.Proxies.UseServiceFunction.UseService(ChannelFactory`1 channelFactory, Func`2 useService) D:\NextGenIssueTracker\branches\2011Updates\NextGenIssueTracker.Proxies\Proxies\IssueTrackerProxy.cs:25 中的 NGIT.Proxies.IssueTrackerProxy.CreateIssue(CreateIssueRequest 请求) D:\NextGenIssueTracker\branches\2011Updates\NGIT.Test.ClientProxy\Default.aspx.cs:36 中的 NGIT.Test.ClientProxy.Default.createIssueButtonClick(Object sender, EventArgs e) System.Web.UI.WebControls.Button.OnClick(EventArgs e) +118 System.Web.UI.WebControls.Button.RaisePostBackEvent(字符串 eventArgument)+112 System.Web.UI.WebControls.Button.System.Web.UI.IPostBackEventHandler.RaisePostBackEvent(字符串 eventArgument)+10 System.Web.UI.Page.RaisePostBackEvent(IPostBackEventHandler sourceControl, String eventArgument) +13 System.Web.UI.Page.RaisePostBackEvent(NameValueCollection postData) +36 System.Web.UI.Page.ProcessRequestMain(布尔 includeStagesBeforeAsyncPoint,布尔 includeStagesAfterAsyncPoint)+5563下面是 Trace Viewer 的内部异常:
System.Data.EntityCommandExecutionException,System.Data.Entity,版本=4.0.0.0,文化=中性,PublicKeyToken=b77a5c561934e089 执行命令定义时发生错误。有关详细信息,请参阅内部异常。 在 System.Data.EntityClient.EntityCommandDefinition.ExecuteStoreCommands(EntityCommand entityCommand,CommandBehavior 行为) 在 System.Data.Objects.ObjectContext.CreateFunctionObjectResult[TElement](EntityCommand entityCommand,EntitySet entitySet,EdmType edmType,MergeOption mergeOption) 在 System.Data.Objects.ObjectContext.ExecuteFunction[TElement](String functionName, MergeOption mergeOption, ObjectParameter[] 参数) 在 System.Data.Objects.ObjectContext.ExecuteFunction[TElement](字符串函数名,ObjectParameter[] 参数) 在 D:\NextGenIssueTracker\branches\2011Updates\NextGenIssueTracker.Data\UserIssueObjectGenerator.cs:line 305 中的 NGIT.Data.UserIssueEntities.CreateIssue(String issueTitle, String nextGenUserId, Nullable`1 guid) 在 D:\NextGenIssueTracker\branches\2011Updates\DataAccess.NextGenIssueTracker\Repositories\SqlUserIssueRepository.cs:line 51 中的 Liberty.DataAccess.NGIT.SqlUserIssueRepository.AddIssue(用户用户,问题问题) 在 D:\NextGenIssueTracker\branches\2011Updates\BusinessServices.NextGenIssueTracker\ServiceImplementations\IssueTrackerService.cs:line 59 中的 BusinessServices.NGIT.ServiceImplementations.IssueTrackerService.CreateIssue(CreateIssueRequest request) 在 SyncInvokeCreateIssue(对象,对象 [],对象 []) 在 System.ServiceModel.Dispatcher.SyncMethodInvoker.Invoke(对象实例,对象 [] 输入,对象 [] 和输出) 在 System.ServiceModel.Dispatcher.DispatchOperationRuntime.InvokeBegin (MessageRpc& rpc) 在 System.ServiceModel.Dispatcher.ImmutableDispatchRuntime.ProcessMessage5(MessageRpc& rpc) 在 System.ServiceModel.Dispatcher.ImmutableDispatchRuntime.ProcessMessage41(MessageRpc& rpc) 在 System.ServiceModel.Dispatcher.ImmutableDispatchRuntime.ProcessMessage4(MessageRpc& rpc) 在 System.ServiceModel.Dispatcher.ImmutableDispatchRuntime.ProcessMessage31(MessageRpc& rpc) 在 System.ServiceModel.Dispatcher.ImmutableDispatchRuntime.ProcessMessage3(MessageRpc& rpc) 在 System.ServiceModel.Dispatcher.ImmutableDispatchRuntime.ProcessMessage2(MessageRpc& rpc) 在 System.ServiceModel.Dispatcher.ImmutableDispatchRuntime.ProcessMessage11(MessageRpc& rpc) 在 System.ServiceModel.Dispatcher.ImmutableDispatchRuntime.ProcessMessage1(MessageRpc& rpc) 在 System.ServiceModel.Dispatcher.MessageRpc.Process(布尔 isOperationContextSet)【问题讨论】:
-
异常类型意味着这是一个与数据相关的异常。您可以发布完整的异常(消息、类型 + 堆栈跟踪)吗?
-
我不确定 GUID 数据类型是否可互操作。你试过只替换一个字符串吗?
-
EntityCommandExecutionException的内部异常是什么?
标签: c# .net wcf web-services guid