Wcf 本地生成v TFSBuild问题。。。有什么想法吗?
我有一个WCF项目,它公开了两个服务。当我在本地构建服务时,它运行良好。TFS生成创建程序集时,其中一个服务不工作。在调用服务之前,客户端应用程序抛出一个“索引超出数组边界”异常 我们对迁移的基于MSBuild的项目使用TFS2010,而不是新的工作流过程 我可以用我机器上的发布版本替换TFS构建的DLL,然后服务开始工作。我可以将TFS构建版本的DLL放在我的机器上,而我的本地服务开始失败 我检查过的东西:Wcf 本地生成v TFSBuild问题。。。有什么想法吗?,wcf,dynamic,tfsbuild,Wcf,Dynamic,Tfsbuild,我有一个WCF项目,它公开了两个服务。当我在本地构建服务时,它运行良好。TFS生成创建程序集时,其中一个服务不工作。在调用服务之前,客户端应用程序抛出一个“索引超出数组边界”异常 我们对迁移的基于MSBuild的项目使用TFS2010,而不是新的工作流过程 我可以用我机器上的发布版本替换TFS构建的DLL,然后服务开始工作。我可以将TFS构建版本的DLL放在我的机器上,而我的本地服务开始失败 我检查过的东西: 所有项目都设置为构建任何CPU版本 这两台机器都安装了VS2010 SP1 反汇编这
- 所有项目都设置为构建任何CPU版本
- 这两台机器都安装了VS2010 SP1
- 反汇编这两个DLL表明它们包含相同的代码
System.ServiceModel.FaultException 1[System.ServiceModel.ExceptionDetail]:索引超出了数组的边界。(故障详细信息等于ExceptionDetail,可能由IncludeExceptionDetailInFaults=true创建,其值为:
System.IndexOutOfRangeException:索引超出了数组的边界。
在Microsoft.CSharp.RuntimeBinder.ExpressionTreeCallRewriter.GetMethodInfoFromExpr(EXPRMETHODINFO methinfo)上
在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…
中,您可以检查以下几点:
- 您是否使用了任何预编译器,比如ngen,它会根据机器的CPU编译代码
- 您是否使用任何第三方库
- 关于64位,windows 2003框中IIS上的应用程序池设置是什么
- 对于这两台机器,.net framework的修补程序级别是否相同
希望有帮助:)谢谢你的建议。。。都是好主意 我发现我的问题更微妙。大会正在利用动力。如果您使用dynamics调用具有公共基类型的类上的方法,其中基类型位于不同的程序集中,那么就会出现一个鲜为人知的动态错误。dynamics实现查找要调用的方法的方式使用MetadataToken来标识该方法,但是这并不能保证是唯一的accross程序集,因此dynamics可能会混淆,并尝试调用不同的方法,可能使用不同数量的参数,因此会出现IndexOutOfRangeException 这已报告并修复,但尚未提供: 我仍然不知道为什么DLL的一个版本可以工作,而另一个版本不能。但由于没有使用公共基类,问题就消失了