找不到方法:'System.String System.String.Format(System.IFormatProvider,System.String,System.Object)

Dal*_*use 22 c# asp.net azure asp.net-web-api2

我有一个Web API 2项目,其中包含可在本地运行良好的帮助页面但在将其推送到Azure时会抛出此错误:

找不到方法:'System.String System.String.Format(System.IFormatProvider,System.String,System.Object)

我暂时关闭了自定义错误,因此可以在此处看到完整的堆栈跟踪

错误源自这行代码:

string selectExpression = String.Format(CultureInfo.InvariantCulture,MethodExpression,GetMemberName(reflectActionDescriptor.MethodInfo));

这里的第96行

完整的源代码可以在GitHub找到

我甚至不确定这个去哪里.

在此先感谢您的帮助.

Cod*_*ter 29

根据其MSDN页面,您使用的重载仅在.NET 4.6上受支持.

将主机配置为运行.NET 4.6或将项目的目标框架更改为4.5并重新编译.

在4.5中,将会选择一个params object[]重载,而不必更改代码.


npo*_*lli 7

这没有意义.自2009年以来,我们在应用程序中有一行代码

String.Format(CultureInfo.CurrentCulture, "You must specify a new password of {0} or more characters.", _membershipService.MinPasswordLength);

最近我们将项目升级到.NET 4.6,现在,至少对我来说,这一行打破了同样的错误.显然,新的重载正在破坏某些东西,而且这种方法并不新鲜.


bN_*_*bN_ 7

如果你既不能将主机升级到4.6也不能将项目降级到4.5,那么就有一种解决方法:将"object []"作为args而不是"object"传递.所以你将强制使用"params object []"重载.示例:

return string.Format(formatProvider, "{0:" + format + "}", new object[] { value });
Run Code Online (Sandbox Code Playgroud)