Полагаю, что .NET Framework, установленный на сервере, был обновлен, а закрытый конструктор больше не присутствует в новой версии.
Разработчикам сборок (в данном случае Microsoft) разрешается изменять любые частные (или внутренние) типы или элементы по их прихоти, при этом это не считается переломным изменением.
Редактировать : Я проверил на своем компьютере под .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);
Обновление : Хорошая новость заключается в том, что класс MimeMapping
и его метод GetMimeMapping
кажутся открытыми в .NET 4.5 ,
Однако это означает, что ваш код обязательно сломается, так как вы ищете только методы NonPublic
. Попробуйте вместо этого выполнить поиск по принципу «все включено» и посмотрите, отображается ли GetMimeMapping
:
var methods = mimeMappingType.GetMethods(
BindingFlags.Instance |
BindingFlags.Static |
BindingFlags.Public |
BindingFlags.NonPublic |
BindingFlags.FlattenHierarchy);