我的猜测是服务器上安装的 .NET Framework 已升级,并且新版本下不再存在私有构造函数。
程序集开发人员(在本例中为 Microsoft)可以随心所欲地更改任何私有(或内部)类型或成员,而不会被视为重大更改。
Edit:我在.NET 4.0下检查了我的电脑,该方法仍然存在。这是它的签名:
// System.Web.MimeMapping
internal static string GetMimeMapping(string FileName)
此时,我的两个建议是在运行时检查您的实际 .NET 版本......
var version = System.Runtime.InteropServices.RuntimeEnvironment.GetSystemVersion();
…并列举方法MimeMapping
类来检查它们是否符合您的期望:
var methods = mimeMappingType.GetMethods(BindingFlags.Static | BindingFlags.NonPublic);
Update: 好消息是MimeMapping http://msdn.microsoft.com/en-us/library/hh160668%28v=vs.110%29.aspx类及其GetMimeMapping http://msdn.microsoft.com/en-us/library/system.web.mimemapping.getmimemapping%28v=vs.110%29.aspx方法似乎可能会在 .NET 4.5 中公开。
然而,这意味着你的代码肯定会崩溃,因为你只是在搜索NonPublic
方法。尝试执行全包搜索,看看是否GetMimeMapping
出现:
var methods = mimeMappingType.GetMethods(
BindingFlags.Instance |
BindingFlags.Static |
BindingFlags.Public |
BindingFlags.NonPublic |
BindingFlags.FlattenHierarchy);