Azure Service Fabric在生产服务器上缺少DLL:FabricCommon.dll

时间:2016-06-24 12:55:10

标签: azure-service-fabric

我创建了一个在开发集群上运行的actor服务。 ASP.NET应用程序(通过IIS单独托管)连接到群集并使用actor。这很好。

但是当我将所有内容部署到生产环境时,ASP.NET应用程序无法连接到具有以下异常的群集。群集是内部托管的(Windows 2012 R2)。

The type initializer for 'Microsoft.ServiceFabric.Services.ServiceTrace' threw an exception.

Stacktrace:
   at Microsoft.ServiceFabric.Services.Common.FabricServiceConfig.TryGetConfigPackageObject(String configPackageName, ConfigurationPackage& package)
   at Microsoft.ServiceFabric.Services.Common.FabricServiceConfig.GetSettingsFilePath(String configPackageName)
   at Microsoft.ServiceFabric.Services.Common.FabricServiceConfig.GetConfig()
   at Microsoft.ServiceFabric.Services.Common.FabricServiceConfigSection.Initialize()
   at Microsoft.ServiceFabric.Services.Communication.FabricTransport.Common.FabricTransportSettings.LoadFrom(String sectionName, String filepath, String configPackageName)
   at Microsoft.ServiceFabric.Services.Communication.FabricTransport.Common.FabricTransportSettings.TryLoadFrom(String sectionName, FabricTransportSettings& settings, String filepath, String configPackageName)
   at Microsoft.ServiceFabric.Services.Communication.FabricTransport.Common.FabricTransportSettings.GetDefault(String sectionName)
   at Microsoft.ServiceFabric.Actors.Remoting.FabricTransport.FabricTransportActorRemotingProviderAttribute.CreateServiceRemotingClientFactory(IServiceRemotingCallbackClient callbackClient)
   at Microsoft.ServiceFabric.Actors.Client.ActorProxyFactory.CreateServiceRemotingClientFactory(Type actorInterfaceType)
   at Microsoft.ServiceFabric.Actors.Client.ActorProxyFactory.GetOrCreateServiceRemotingClientFactory(Type actorInterfaceType)
   at Microsoft.ServiceFabric.Actors.Client.ActorProxyFactory.CreateActorProxy[TActorInterface](Uri serviceUri, ActorId actorId, String listenerName)
   at Microsoft.ServiceFabric.Actors.Client.ActorProxy.Create[TActorInterface](ActorId actorId, Uri serviceUri, String listenerName)

Inner Exception:
innerExceptionType: System.DllNotFoundException
innerStacktrace:
   at System.Fabric.Interop.NativeCommon.FabricGetConfigStore(Guid& riid, IFabricConfigStoreUpdateHandler updateHandler)
   at System.Fabric.Common.NativeConfigStore.CreateHelper(IFabricConfigStoreUpdateHandler updateHandler)
   at System.Fabric.Interop.Utility.WrapNativeSyncInvoke[TResult](Func`1 func, String functionTag, String functionArgs)
   at System.Fabric.Interop.Utility.RunInMTA[TResult](Func`1 func)
   at Microsoft.ServiceFabric.Common.Tracing.Trace.InitializeFromConfigStore()
   at Microsoft.ServiceFabric.Services.ServiceTrace..cctor()
innerExceptionMessage: Unable to load DLL 'FabricCommon.dll': The specified module could not be found. (Exception from HRESULT: 0x8007007E)
exceptionType: System.TypeInitializationException

似乎无法在Web服务器(托管ASP.NET)上找到 FabricCommon.dll

我发现此文件是群集安装包的一部分。在开发计算机和群集计算机上,该文件位于此处:C:\Program Files\Microsoft Service Fabric\bin\Fabric\Fabric.Code\FabricCommon.dll。但它显然不是通过NuGet在客户端应用程序中安装的依赖项。

我是否错过了在Web服务器上安装任何先决条件?我是否必须手动包含DLL?

5 个答案:

答案 0 :(得分:7)

将以下Service Fabric bin路径添加到PATH环境变量:

set PATH=%PATH%;C:\Program Files\Microsoft Service Fabric\bin\Fabric\Fabric.Code 

还将执行策略设置为不受限制:

Set-ExecutionPolicy -ExecutionPolicy Unrestricted -Force -Scope CurrentUser 

答案 1 :(得分:4)

我认为您需要在Web服务器上安装Service Fabric SDK。

请参阅以下链接: https://azure.microsoft.com/en-us/documentation/articles/service-fabric-get-started/

答案 2 :(得分:1)

我在开发机器中的某个时刻发生了这种情况。我所做的就是重新安装Service Fabric SDK。

答案 3 :(得分:0)

如果您无法在目标环境中安装Service Fabric SDK,则可以选择使用Service Fabric REST API

以下是my repo,其中API客户端使用C#编写,可以使用此API解析服务

答案 4 :(得分:0)

我有同样的问题。重新启动计算机即可解决问题。