我觉得这可能会落入缺少/不正确部署的dll的桶中,但据我在服务器上看到的,这是它上的唯一程序集,其版本与在本地计算机中工作的相同。
我使用的是IdentityModel 3.7版本,特别是这个构造函数,
它在本地构建甚至运行都很好。我将它部署到我的QA服务器上,bam缺少方法异常。我甚至把它升级到了3.9版本,并进行了部署,只是想看看这是否可行,没有任何改变。很遗憾,此程序集没有公钥标记,尽管我在所有驱动器中搜索了IdentityModel.dll的另一个版本,但没有找到任何。GAC里什么都没有,重启没用,我没主意了。
找不到方法:“Void IdentityModel.Client.TokenClient..ctor(System.String,System.String,System.Net.Http.HttpMessageHandler,IdentityModel.Client.AuthenticationStyle)”
编辑我添加了一些日志代码
Assembly assem = Assembly.GetAssembly(typeof(TokenClient));
FileVersionInfo fvi = FileVersionInfo.GetVersionInfo(assem.Location);
string version = fvi.FileVersion;
_logger.Error(String.Format("{0} : {1}", assem.FullName, version));
它们都会在我的本地盒子和坏掉的QA环境上打印出相同的版本。
编辑2
我添加了日志记录代码来记录所有构造函数和方法,并在两个框中打印出相同的内容。我甚至可以看到我的构造函数在缺少方法异常之前注销。