gpt4 book ai didi

wcf - Local Build v TFSBuild 问题...有什么想法吗?

转载 作者:行者123 更新时间:2023-12-02 22:38:56 26 4
gpt4 key购买 nike

我有一个公开两个服务的 WCF 项目。当我在本地构建服务时,它工作正常。当 TFS Build 创建程序集时,其中一项服务不起作用。在调用服务之前,客户端应用程序抛出“索引超出数组范围”异常。

我们针对迁移的基于 MSBuild 的项目而不是新的工作流程使用 TFS2010。

我可以用我机器上的发布构建版本替换 TFS 构建的 DLL,服务开始工作。我可以将 DLL 的 TFS 构建版本放在我的机器上,然后我的本地服务开始失败。

我检查过的东西:

  • 所有项目都设置为构建 Release |任何 CPU
  • 两台机器都安装了 VS2010 SP1
  • 反汇编这两个 DLL 显示它们包含相同的代码

有点担心:我的机器是 Windows 7 x64,构建机器是 Windows Server 2003 x86。但是,我推测 Any CPU 意味着这在构建过程中应该不是问题。

有没有人对调查此问题的其他方法有任何建议?

来自客户端的堆栈跟踪包括:

System.ServiceModel.FaultException 1[System.ServiceModel.ExceptionDetail]:索引超出数组范围。 (Fault Detail 等于 An ExceptionDetail,很可能是由 IncludeExceptionDetailInFaults=true 创建的,其值为:
System.IndexOutOfRangeException:索引超出数组范围。
在 Microsoft.CSharp.RuntimeBinder.ExpressionTreeCallRewriter.GetMethodInfoFromExpr(EXPRMETHODINFO 方法信息)
在 Microsoft.CSharp.RuntimeBinder.ExpressionTreeCallRewriter.GenerateCall(EXPRCALL pExpr)
在 Microsoft.CSharp.RuntimeBinder.ExpressionTreeCallRewriter.VisitCALL(EXPRCALL pExpr)
在 Microsoft.CSharp.RuntimeBinder.Semantics.ExprVisitorBase.Dispatch(EXPR pExpr)
在 Microsoft.CSharp.RuntimeBinder.Semantics.ExprVisitorBase.Visit(EXPR pExpr)
在 Microsoft.CSharp.RuntimeBinder.ExpressionTreeCallRewriter.GenerateLambda(EXPRCALL pExpr)
在 Microsoft.CSharp.RuntimeBinder.ExpressionTreeCallRewriter.VisitCALL(EXPRCALL pExpr)
在 Microsoft.CSharp.RuntimeBinder.Semantics.ExprVisitorBase.Dispatch(EXPR pExpr)
在 Microsoft.CSharp.RuntimeBinder.Semantics.ExprVisitorBase.Visit(EXPR pExpr)
在 Microsoft.CSharp.RuntimeBinder...

最佳答案

感谢您的建议...所有好主意。

我发现我的问题更微妙。该组件正在使用动态。如果您使用它来调用具有公共(public)基类型的类上的方法,而该基类型位于不同的程序集中,则有一个鲜为人知的动态错误。动态实现查找要调用的方法的方式使用 MetadataToken 来标识该方法,但是不能保证这在程序集中是唯一的,因此动态可能会混淆并可能尝试调用不同的方法,可能具有不同数量的参数,因此 IndexOutOfRangeException!

这已被报告并修复,但尚不可用:

https://connect.microsoft.com/VisualStudio/feedback/details/691494/issue-with-getmethodinfofromexpr

我仍然不确定为什么一个版本的 DLL 可以工作而另一个版本不能。但是通过不使用公共(public)基类,问题就消失了。

关于wcf - Local Build v TFSBuild 问题...有什么想法吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11034070/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com