Метод не найден: 'System.String System.String.Format (System.IFormatProvider, System.String, System.Object)' - PullRequest
3 голосов
/ 19 апреля 2019

У меня есть два сервера, но в целом они работают с одинаковыми настройками - IIS, SQL Server и т. Д. Один выдает мне эту ошибку, другой - нет. Я публикую один и тот же код из Visual Studio для обоих.

Они оба работают .NET CLR Version v4.0.30319, что я считаю 4.5.

В некоторых ответах говорится, что вам нужно настроить таргетинг на другую версию. Если я изменю это в visual studio, все сломается, так что это не так. Кроме того, тот же код работает на другом сервере.

Другие ответы говорят, что причиной могут быть некоторые старые DLL. Я не развернул на рабочем сервере, так что, может быть, были скопированы некоторые более новые библиотеки DLL? Но откуда мне знать?

Кроме того, ошибка, кажется, не в моем коде, скорее в фреймворке и Umbraco, поэтому я не думаю, что мне следует заходить и обновлять строковые функции или что-то в этом роде:

[MissingMethodException: Method not found: 'System.String System.String.Format(System.IFormatProvider, System.String, System.Object)'.]
   System.Net.Http.Headers.MediaTypeHeaderValue.CheckMediaTypeFormat(String mediaType, String parameterName) +0
   System.Net.Http.Headers.MediaTypeHeaderValue..ctor(String mediaType) +33
   System.Net.Http.Formatting.MediaTypeConstants..cctor() +45

[TypeInitializationException: The type initializer for 'System.Net.Http.Formatting.MediaTypeConstants' threw an exception.]
   System.Net.Http.Formatting.JsonMediaTypeFormatter..ctor() +99
   System.Net.Http.Formatting.MediaTypeFormatterCollection.CreateDefaultFormatters() +49
   System.Web.Http.HttpConfiguration..ctor(HttpRouteCollection routes) +255
   System.Web.Http.GlobalConfiguration.<CreateConfiguration>b__0() +78
   System.Lazy`1.CreateValue() +14308960
   System.Lazy`1.LazyInitValue() +524
   Umbraco.Web.WebBootManager.InitializeResolvers() +1530
   Umbraco.Core.CoreBootManager.Initialize() +814
   Umbraco.Web.WebBootManager.Initialize() +19
   Umbraco.Core.UmbracoApplicationBase.StartApplication(Object sender, EventArgs e) +244

[HttpException (0x80004005): The type initializer for 'System.Net.Http.Formatting.MediaTypeConstants' threw an exception.]
   System.Web.HttpApplicationFactory.EnsureAppStartCalledForIntegratedMode(HttpContext context, HttpApplication app) +588
   System.Web.HttpApplication.RegisterEventSubscriptionsWithIIS(IntPtr appContext, HttpContext context, MethodInfo[] handlers) +181
   System.Web.HttpApplication.InitSpecial(HttpApplicationState state, MethodInfo[] handlers, IntPtr appContext, HttpContext context) +322
   System.Web.HttpApplicationFactory.GetSpecialApplicationInstance(IntPtr appContext, HttpContext context) +402
   System.Web.Hosting.PipelineRuntime.InitializeApplication(IntPtr appContext) +452

[HttpException (0x80004005): The type initializer for 'System.Net.Http.Formatting.MediaTypeConstants' threw an exception.]
   System.Web.HttpRuntime.FirstRequestInit(HttpContext context) +646
   System.Web.HttpRuntime.EnsureFirstRequestInit(HttpContext context) +159
   System.Web.HttpRuntime.ProcessRequestNotificationPrivate(IIS7WorkerRequest wr, HttpContext context) +778

Как правило, в Google не так много информации, поэтому не уверен, что можно сделать. Любые идеи приветствуются!

1 Ответ

3 голосов
/ 19 апреля 2019

Если вы посмотрите документацию , эта перегрузка будет доступна только в .NET 4.6.Возможно, серверы имеют разные версии .NET Framework.

Ближайшая перегрузка в .NET 4.5:

Format(IFormatProvider, String, Object[])

В .NET 4.6 точно такая же перегрузка:

Format(IFormatProvider, String, Object)

Убедитесь, что на обоих серверах правильно установлен .NET 4.6.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...