2016-05-10 3 views
0

Ich habe eine Webverweis (WSDL) zu einer Klassenbibliothek hinzugefügt und dann verwiesen diese DLL in einem Timer ausgelöst C# Azure-Funktion (read more about azure functions). Die Klassenbibliothek hat eine Klasse EmployeeService, die eine Methode vom Web-Service aufruft (eine Art Webservice-Wrapper). Wenn ich die class-lib-Methode (GetEmployees) von einer Konsolenanwendung aus aufrufe, authentifiziert sie sich beim Web-Service und gibt das Ergebnis zurück, aber wenn ich die azure-Funktion für den gleichen Code und die creds ausführe, gibt es 401. Nicht sicher, was ich hier falsch mache:Aufruf einer externen Webservice-Methode von Azure-Funktion 401 zurück, aber der gleiche Code funktioniert in einer Konsolenanwendung

#r "MyConsult.Service.dll" 
#r "Newtonsoft.Json.dll" 

using System; 
using System.Collections.Generic; 
using System.Diagnostics; 
using System.Linq; 
using System.Text; 
using System.Threading.Tasks; 
using System.Timers; 
using Newtonsoft.Json; 
using System.Net; 
using MyConsult.Service.Service; 

public static void Run(TimerInfo myTimer, TraceWriter log) 
{ 
    log.Info($"C# Timer trigger function executed at: {DateTime.Now}"); 

    try 
    { 
     EmployeeService _empService = new EmployeeService();     
     var emps = _empService.GetEmployees(); 

     int count = emps.Where(x => !string.IsNullOrEmpty(x.Email)).Select(x => x.Email).Distinct().Count(); 
     log.Info($"employee count : {count}");  
    } 
    catch (Exception ex) 
    { 
     log.Info($"Exception Message: {ex.Message}"); 
     log.Info($"Exception Stack Trace: { ex.StackTrace}"); 
    } 
} 
+0

Ich habe das gleiche Problem, aber es funktioniert nach dem Warten für einige Minuten (oder umstellen?). so seltsam. aber es funktioniert jetzt. – Paul

Antwort

0

Ihre Konsolenanwendung authentifiziert sich wahrscheinlich anhand der Einstellungen für die Dienstkonfiguration in Ihrer app.config. Für Ihre Funktion müssen Sie diese Einstellungen beim Erstellen des Clients/Proxys programmgesteuert anwenden.

+0

Selbst ich dachte, das könnte das Problem sein, also habe ich die Anmeldeinformationen fest codiert. Wird nicht aus der Konfiguration gelesen. – shwetaOnStack

+0

Weitere Informationen über den verwendeten Authentifizierungsmodus sowie den aktualisierten Funktionscode mit den von Ihnen vorgenommenen Änderungen der Authentifizierung wären hilfreich. Ist das etwas, was du anbieten kannst? –