Размещение службы WCF с использованием неуправляемых библиотек DLL - PullRequest
1 голос
/ 01 января 2012

У меня есть управляемая DLL, которая внутренне ссылается на пару неуправляемых DLL.Эта управляемая DLL добавлена ​​как ссылка на мой сервисный проект WCF.Однако неуправляемые библиотеки DLL должны быть вручную скопированы в путь вывода сборки моего проекта.На них нельзя ссылаться в Visual Studio.

Если я попытаюсь запустить свою служебную DLL-библиотеку на узле службы WCF в Visual Studio, последний аварийно завершает работу без каких-либо исключений и автоматически перезапускается.Sampe применяется, если я пытаюсь разместить службу DLL в IIS.Мне удалось перехватить один из журналов сбоев WERReportMetadata при попытке разместить его в IIS, и в поле «ProblemSignatures» написано:

<ProblemSignatures>
    <EventType>CLR20r3</EventType>
    <Parameter0>webdev.webserver40.exe</Parameter0>
    <Parameter1>10.0.0.0</Parameter1>
    <Parameter2>4d5f345a</Parameter2>
    <Parameter3>GTAPIASM</Parameter3>
    <Parameter4>2.0.5.0</Parameter4>
    <Parameter5>4e9254a5</Parameter5>
    <Parameter6>166</Parameter6>
    <Parameter7>23</Parameter7>
    <Parameter8>System.AccessViolationException</Parameter8>
  </ProblemSignatures> 

Что это значит и что я могу с этим сделать?Любой справочный материал по хостингу WCF с неуправляемыми DLL тоже будет полезен.

Редактировать 1: Копирование неуправляемых DLL-файлов в% systemroot% \ syswow64 позволяет мне размещать свою службу с помощью Visual Studio WCF Service Host.Я получил совет от здесь .Однако это не останавливает сбой WebDev.WebDServer40.exe.

Редактировать 2 Это ошибка .NET Runtime, полученная из Просмотрщика событий:

Приложение: WebDev.WebServer40.exe Framework Версия: v4.0.30319 Описание:процесс был прерван из-за необработанного исключения.Сведения об исключении: стек исключений System.TypeInitializationException: в System.RuntimeMethodHandle._InvokeConstructor (System.IRuntimeMethodInfo, System.Object [], System.SignatureStruct ByRef, System.RuntimeType) в System.RuntimeMethodIRjectOto.Into.OnjectOn.IntoIn.Info.Into.Inject.Inject.Inject.Inject.OntInIn.In (, System..CreateImplementation (System.Type) в System.ServiceModel.Description.ServiceDescription.SetupSingleton (System.ServiceModel.Description.ServiceDescription, System.Object, Boolean) в System.ServiceModel.Description.ServiceDescription.GetSyservice (System.ServiceModel.ServiceHost.CreateDescription (System.Collections.Generic.IDictionary`2 ByRef) в System.ServiceModel.ServiceHostBase.InitializeDescription (System.ServiceModel.UriSchemeKeyedCollection) в System.ServiceModel.ServiceHost.InitializeDescription (System.Type, System.ServiceModel.UriSchemeKeyedCollection) в System.ServiceModel.ServiceHost..ctor (System.Type, System.Uri []) в System.ServiceFactSAvice.ServiceFodel.CreateServiceHost (System.Type, System.Uri []) в System.ServiceModel.Activation.ServiceHostFactory.CreateServiceHost (System.String, System.Uri []) в System.ServiceModel.ServiceHostingEnvironment + HostingManager.CreateService в System (.ServiceModel.ServiceHostingEnvironment + HostingManager.ActivateService (System.String) в System.ServiceModel.ServiceHostingEnvironment + HostingManager.EnsureServiceAvailable (System.String) в System.ServiceModel.ServiceHextSecureSnSureFidSignSignSignSigner_Serv_Server_Med_Serv_RuText_MeHandleRequest () в System.ServiceModel.Activation.HostedHttpRequestAsyncResult.BeginRequest () в System.ServiceModel.Activation.HostedHttpRequestAsyncResult.OnBeginRequest (System.Object) в System.Runtime.IOThreadScheduler + ScheduledOverlapped.в System.Threading._IOCompletionCallback.PerformIOCompletionCallback (UInt32, UInt32, System.Threading.NativeOverlapped *)

Edit 2:

Оказывается, мне нужно бежатьVisual Studio в качестве администратора на все времена.Это устраняет предыдущую ошибку.

Спасибо.

1 Ответ

0 голосов
/ 02 января 2012

Мне нужно было добавить неуправляемые библиотеки DLL в% systemroot% \ syswow64. Сделал это и смог запустить мой сервис в WCF Service Host в Visual Studio, а также на сервере разработки ASP.

...