2016-09-21 1 views
0

Ich versuche, WCF Webserice zu konsumieren, die Siteminder geschützt ist. Das Problem ist, wenn ich versuche, die Webservice-URL im Browser zu durchsuchen, funktioniert es gut mit den Anmeldeinformationen, die ich angegeben habe.WCF-Dienst mit Siteminder geschützt C#

Aber wenn ich versuche, das gleiche programmatisch zu tun, wirft es einen Fehler - Fehler # 401 nicht autorisiert.

Referenz - http://www.codeproject.com/Articles/80314/How-to-Connect-to-a-SiteMinder-Protected-Resource

 CookieContainer cookies = null; 
     HttpWebRequest request = null; 
     HttpWebResponse response = null; 
     string responseString = null; 
     NameValueCollection tags = null; 
     string url = null; 
     url = PROTECTED_URL; 
     Debug.WriteLine("Step 1: Requesting page @" + url); 
     request = (HttpWebRequest)WebRequest.Create(url); 
     request.AllowAutoRedirect = false; 
     response = (HttpWebResponse)request.GetResponse(); 
     ShowResponse(response); 
     // Step 2: Get the redirection location 
     // make sure we have a valid response 
     if (response.StatusCode != HttpStatusCode.Found) 
     { 
      throw new ApplicationException(); 
     } 
     url = response.Headers["Location"]; 
     // Step 3: Open a connection to the redirect and load the login form, 
     // from this screen we will capture the required form fields. 
     Debug.WriteLine("Step 3: Requesting page @" + url); 
     request = (HttpWebRequest)WebRequest.Create(url); 
     request.AllowAutoRedirect = false; 

     try 
     { 
      response = (HttpWebResponse)request.GetResponse(); 
     } 
     catch (Exception ex) 
     { 
      string str = ex.Message.ToString(); 
     } 
+0

Also, wenn Sie Beispielmethode vom Browser aufrufen, funktioniert es gut, aber wenn Sie die gleiche Methode programmgesteuert aufrufen es nicht? Zeigen Sie zuerst Ihren Code. –

+0

Wenn ich die URL mit meinen Zugangsdaten ankreuze, funktioniert es gut, aber wenn ich programmgesteuert versuche, die Antwort zu bekommen, wird der Fehler –

+0

angezeigt Code anzeigen. Wie Sie versuchen, es zu bekommen –

Antwort

0

Es ist mein HtTpClientWCF zu nennen.

public async Task<string> webClient(string method, string uri) 
     { 
       try 
       { 

        var client = new HttpClient(); 
        client.Timeout =new TimeSpan(0,0,0,10); 
        client.BaseAddress = new Uri(uri); 
        client.DefaultRequestHeaders.Accept.Add(
        new MediaTypeWithQualityHeaderValue("application/json")); 
        var response = client.GetAsync(method).Result; 

        string content = await response.Content.ReadAsStringAsync(); 
        return content; 

       } 
       catch (Exception ex) 
       { 
        return "Error"; 
       } 
} 

Uri ist Basisadresse, Methode ist Ihr Methodenname.

string response = webClient(uri + "/GetSomething/", uri).Result; 
+0

können Sie den vollen Code teilen –

Verwandte Themen