2016-11-17 10 views
2

Azure関数がロードしようとしているアセンブリはどこにありますか?更新良く受け入れ答えAzureからのWCFサービスへの接続機能とトラブルシューティングアセンブリバインディング

を反映するために要求されるように更新タイトル 更新

(Windowsの場合fuslogvw-を同様に)

「手動」Webクライアントを使用してSOAPリクエストを構築するために自分のコードを変更し

とそれは動作します...私は、Azure関数であるサンドボックス内でWCFサービスプロキシがうまく動かないと思います。でも、Assemblyバインディングログビューをどのように見ることができるかについてはまだ答えが気に入っています。

2016-11-17T10:32:44.392 System.IO.FileNotFoundException:ファイル名、 ディレクトリ名、またはボリュームラベルオリジナルポスト

私は同じエラーを取得しておく

構文が正しくありません。 Microsoft.Win32.Fusionで

System.Runtime.InteropServices.Marshal.ThrowExceptionForHRInternal(のInt32 のerrorCode、のIntPtrのerrorInfo)で

サーバースタックトレース:(0x8007007B HRESULTからの例外)。 ReadCache(ArrayListにalAssems、文字列 名、UInt32型nFlag)System.Reflection.RuntimeAssembly.EnumerateCache(のAssemblyName partialName)で

System.Reflection.Assembly.LoadWithPartialName(文字列 partialName、証拠securityEvidence)

でSystem.Reflection.RuntimeAssembly.LoadWithPartialNameInternal(のAssemblyName 、証拠securityEvidence、StackCrawlMark & stackMark)

ATで10 System.Xml.Serialization.TempAssembly.LoadGeneratedAssembly(タイプ タイプ、文字列defaultNamespace、XmlSerializerImplementation &コントラクト)

システムでSystem.ServiceModel.Description.XmlSerializerOperationBehavior.Reflector.SerializerGenerationContext.GenerateSerializers()

でSystem.Xml.Serialization.XmlSerializer.FromMappings(XmlMapping [] マッピング、タイプtype)

で。 System.ServiceModel.Description.XmlSerializerOperationBehavior.Reflector.MessageInfoでServiceModel.Description.XmlSerializerOperationBehavior.Reflector.SerializerGenerationContext.GetSerializer(のInt32 ハンドル)

。 System.ServiceModel.Dispatcher.XmlSerializerOperationFormatter.SerializeBody(XmlDictionaryWriter ライター、MessageVersionバージョン、文字列の作用、MessageDescription messageDescription、のreturnValueオブジェクト、[]パラメータ、ブール isRequest物体)で

をでget_BodySerializer()

System.ServiceModel.Dispatcher.OperationFormatter.SerializeBodyContents(XmlDictionaryWriter ライター、MessageVersionバージョン、[]パラメータを目的は、 のreturnValue、ブールisRequestオブジェクト) システムで System.ServiceModel.Channels.BodyWriterMessage.OnWriteBodyContents(XmlDictionaryWriter ライター)

で System.ServiceModel.Dispatcher.OperationFormatter.OperationFormatterMessage.OperationFormatterBodyWriter.OnWriteBodyContents(XmlDictionaryWriter ライター)

。 (XmlDictionaryWriter ライター) System.ServiceModel.Channels.HttpOutput.Sendで System.ServiceModel.Channels.HttpOutput.WriteStreamedMessage(のTimeSpan タイムアウト)

でls.TextMessageEncoderFactory.TextMessageEncoder.WriteMessage(メッセージ メッセージ、ストリームstream)

( System.ServiceModel.Channels.HttpChannelFactory`1.HttpRequestChannel.HttpChannelRequest.SendRequest(メッセージ メッセージ、のTimeSpanタイムアウト)

でのTimeSpanタイムアウト)

System.ServiceModel.Channels.RequestChannel.Request(メッセージ メッセージ、のTimeSpanタイムアウト) System.ServiceModel.Dispatcher.RequestChannelBinder.Requestで

(メッセージ メッセージ、のTimeSpanタイムアウト)

System.ServiceModel ATで

System.ServiceModel.Channels.ServiceChannelProxy.InvokeServicで.Channels.ServiceChannel.Call(文字列アクション、 ブール一方向、ProxyOperationRuntime動作、[]インオブジェクト、 オブジェクト[]アウト、のTimeSpanタイムアウト)

E(IMethodCallMessage methodCallで、ProxyOperationRuntime動作)System.ServiceModel.Channels.ServiceChannelProxy.Invoke(IMessageが メッセージ)[0]で

例外再スローで

: System.Runtime.Remotingで

System.Runtime.Remoting.Proxies.RealProxyで.Proxies.RealProxy.HandleReturnMessage(IMessageが reqMsg、IMessageがretMsg)

。PrivateInvoke(のMessageData & msgData、のInt32型)

+0

正確に同じコードが私のコンソールアプリケーションで完璧に動作します...誰もが紺色の機能の中でWCFクライアントのプロキシを操作する経験はありますか? –

答えて

4

は現在、アセンブリバインディングログを表示するにはサポートされていません。 Enabling diagnostic logsは、ほとんどのエラーをデバッグするのに役立ちます。またlogging tips and tricksを見てください。 >クーズーに行く - - アプリケーションの設定を機能する

  1. ガットDに行く>:ここで

    は、あなたの関数からのAzureでホストされているWCFサービスに接続するためのサンプルであるホーム\サイト\ \ wwwroot \のYourFunction
  2. フォルダビン
  3. アップロードSystem.ServiceModel.dll
  4. アップロードWCFサービス契約IService1.csxを作成します。このことができます

    #r "System.ServiceModel.dll" 
    #load "IService1.csx" 
    
    using System; 
    using System.ServiceModel; 
    
    public static void Run(string myQueueItem, TraceWriter log) 
    { 
        log.Info($"C# Queue trigger function processed: {myQueueItem}"); 
    
        BasicHttpBinding b = new BasicHttpBinding(); 
        EndpointAddress ea = new EndpointAddress("http://YourServiceAddress/service1.svc?wsdl"); 
        var myChannelFactory = new ChannelFactory<IService1>(b, ea); 
        IService1 client = myChannelFactory.CreateChannel(); 
        var msg= client.WelComeMessage("HelloWorld"); 
        ((ICommunicationObject)client).Close(); 
        log.Info($"Hello from WCF: {msg}"); 
    } 
    

希望:あなたは、ポータル上クーズーやファイルの表示のいずれかからWCFエンドポイントを呼び出す

#r "System.ServiceModel.dll" 

using System.ServiceModel; 

[ServiceContract] 
public interface IService1 
{ 
    [OperationContract] 
    string GetData(int value); 

    [OperationContract] 
    string WelComeMessage(String name); 
} 
  • サンプルキュートリガをこれを行うことができます!

  • +0

    Wow説明をありがとう、私は今試してみるつもりです...サービスモデルアセンブリを配備すべきだと思います - #rが何とかそれを世話してくれたと思ったでしょうが(GACかそうでなければ)...私はこれがうまくいくと思います、私はあなたに知らせて、私はあなたの答えを正しいものとしてマークします - 私はアセンブリバインディングのログを見る方法を探していたので - あなたは答えました、追加ボーナスWCFのものです。ありがとう、すぐに知らせてください。 –

    +0

    必要なdllをbinフォルダにアップロードする必要があります。ここには[here](https://docs.microsoft.com/en-us/azure/azure-functions/functions-reference-csharp#referencing-external -assemblies) –

    +0

    タイトルを次のように更新できますか?発見機能を向上させるために関数からWCFサービスに接続していますか?ありがとう! –

    関連する問題