2016-06-24 18 views
5

開発クラスター上で動作するアクターサービスを作成しました。 ASP.NETアプリケーション(IIS経由で別にホストされる)は、クラスタに接続し、アクタを使用します。これは正常に動作します。Azureサービスファブリックに実動サーバー上のDLLがありません:FabricCommon.dll

ただし、すべてを本番環境に展開すると、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 

FabricCommon.dllは(ASP.NETをホストする)は、Webサーバー上で見つけることができなかったようです。

このファイルは、クラスタインストールパッケージの一部であることがわかりました。開発マシンとクラスタマシンでは、ファイルはC:\Program Files\Microsoft Service Fabric\bin\Fabric\Fabric.Code\FabricCommon.dllにあります。しかし、明らかに、クライアントアプリケーションにNuGetを介してインストールされた依存関係ではありません。

Webサーバーに前提条件をインストールしていませんか?手動でDLLを含める必要がありますか?

+0

説明エラーは、発生しています。しかし、その間(この投稿のおかげで:http://stackoverflow.com/questions/38015934/how-to-create-actor-proxy-to-remote-service-fabric-cluster)私は、ActorProxyクラスタの外部にあるクライアントアプリケーションから、現在はうまく動作しません。同じSFアプリケーション内でステートレスWebAPIサービスを使用する方法もあります(https://github.com/Azure-Samples/service-fabric-dotnet-web-reference-app)。 – Henrik

答えて

2

WebサーバーにService Fabric SDKをインストールする必要があると思います。私はこれが私のdevのマシンに一点で発生してい https://azure.microsoft.com/en-us/documentation/articles/service-fabric-get-started/

+0

こんにちは。これは、私の特定の問題(DLLがありません)を解決しました。しかし、私はWebサーバーを開発マシンに変換しなければなりませんでした。リモートクラスタに接続することは依然として問題です。その間、私は[this](http://stackoverflow.com/questions/38015934/how-to-create-actor-proxy-to-remote-service-fabric-cluster)を見つけました。 – Henrik

1

は、以下のリンクを参照してください。サービスファブリックSDKを再インストールするだけでした。

2

PATH環境変数に以下のサービスファブリックのbinのパスを追加します。

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

また、設定された実行ポリシー無制限に:あなたは上のサービスファブリックSDKをインストールすることはできません例については

Set-ExecutionPolicy -ExecutionPolicy Unrestricted -Force -Scope CurrentUser 
0

ターゲット環境にはService Fabric REST APIを使用するオプションがあります。ここで

私はActorProxyを作成しようとすると、このAPIを使用してサービスを解決することができますC#で書かれたAPIクライアントとmy repo