c# - nicht - visual studio verweise aktualisieren




Service-Referenz hinzufügen gibt Ausnahme: Verbindung zum Remote-Server nicht möglich (2)

Mein WCF-Dienst gibt Ergebnis zurück, wenn vom Konsolenanwendungsclient aus aufgerufen wird. Es zeigt jedoch

Ausnahme: Verbindung zum Remote-Server konnte nicht hergestellt werden

Tatsächlicher Fehler:

Fehler beim Aufrufen des Service. Mögliche Ursachen: Der Dienst ist offline oder nicht zugreifbar. Die clientseitige Konfiguration stimmt nicht mit dem Proxy überein. Der vorhandene Proxy ist ungültig. Weitere Informationen finden Sie im Stack-Trace. Sie können versuchen, eine Wiederherstellung durchzuführen, indem Sie einen neuen Proxy starten, die Standardkonfiguration wiederherstellen oder den Service aktualisieren.

Fehlerdetails:

Der Server konnte die Anfrage aufgrund eines internen Fehlers nicht verarbeiten. Um weitere Informationen zu dem Fehler zu erhalten, aktivieren Sie entweder IncludeExceptionDetailInFaults (entweder von ServiceBehaviorAttribute oder vom Konfigurationsverhalten) auf dem Server, um die Ausnahmeinformationen an den Client zu senden, oder aktivieren Sie die Ablaufverfolgung gemäß der Microsoft .NET Framework SDK-Dokumentation und Überprüfen Sie die Server-Ablaufverfolgungsprotokolle.

Server-Stack-Ablaufverfolgung: bei System.ServiceModel.Channels.ServiceChannel.ThrowIfFaultUnderstood (Nachrichtenantwort, MessageFault-Fehler, String-Aktion, MessageVersion-Version, FaultConverter faultConverter) bei System.ServiceModel.Channels.ServiceChannel.HandleReply (ProxyOperationRuntime-Vorgang, ProxyRpc & rpc) am System. ServiceModel.Channels.ServiceChannel.Call (String-Aktion, Boolean-Oneway, ProxyOperationRuntime-Operation, Object [] ins, Objekt [] outs, TimeSpan-Timeout) bei System.ServiceModel.Channels.ServiceChannelProxy.InvokeService (IMethodCallMessage-MethodeCall, ProxyOperationRuntime-Operation) am System. ServiceModel.Channels.ServiceChannelProxy.Invoke (IMessage-Nachricht)

Ausnahme erneut bei [0]: at System.Runtime.Remoting.Proxies.RealProxy.HandleReturnMessage (IMessage reqMsg, IMessage retMsg) bei System.Runtime.Remoting.Proxies.RealProxy.PrivateInvoke (MessageData & msgData, Typ Int32) bei IJiraService.GetProjects ( ) bei JiraServiceClient.GetProjects ()

Bitte beachten Sie, dass, wenn Fiddler läuft, der Service funktioniert gut. Wenn ich jedoch Fiddler schließe, dann zeigt es eine Ausnahme:

Das ist Fiddler log (während ich die Daten bekomme):

TTP / 1.1 200 Connection Datum: Do, 06 Aug 2015 14:39:22 GMT Proxy-Verbindung: Keep-Alive Via: 1.1 localhost.localdomain

Verschlüsselter HTTPS-Verkehr fließt durch diesen CONNECT-Tunnel. Die HTTPS-Entschlüsselung ist in Fiddler aktiviert, sodass entschlüsselte Sitzungen, die in diesem Tunnel ausgeführt werden, in der Liste der Websessions angezeigt werden.

Sicheres Protokoll: Tls-Chiffrierung: Aes128 128-Bit-Hash-Algorithmus: Sha1 160bits Schlüsselaustausch: ECDHE_RSA (0xae06) 256bits

== Server-Zertifikat ========== [Betreff] CN = * atlassian.net, O = "Atlassian Network Services, Inc.", L = San Francisco, S = Kalifornien, C = USA

[Aussteller] CN = DigiCert SHA2 Hochsicherheitsserver CA, OU = www.digicert.com, O = DigiCert Inc, C = USA

[Seriennummer] 08E828A2F8C521A2DC7121A28E191837

[Nicht vorher] 09.09.2014 5:30:00 Uhr

[Nicht nach] 11/15/2017 5:30:00 PM

[Fingerabdruck] EA57BE3C6CDA33E6D875889944EE61284E39D91D

HTTP / 1.1 200 OK Server: nginx Datum: Do, 06 Aug 2015 14:39:26 GMT Inhaltstyp: application / json; charset = UTF-8 Transfer-Encoding: chunked Verbindung: keep-alive Variieren: Accept-Encoding X -REQUESTID: 39x4118x1 X-ASEN: SEN-2425233 Satz-Cookie: JSESSIONID = 8B68E46928883CA9F99382A67C228541; Pfad = /; Sichern; HttpOnly Set-Cookie: studio.crowd.tokenkey = ""; Domain = .clientname.atlassian.net; Läuft ab = Do, 01-Jan-1970 00:00:10 GMT; Pfad = /; Sichern; HttpOnly X-Seraph-LoginGrund: OUT Set-Cookie: studio.crowd.tokenkey = YcO0N1IItmmGYah6bzgN0w00; Domain = .clientname.atlassian.net; Pfad = /; Sichern; HttpOnly X-Seraph-LoginGrund: OK Set-Cookie: atlassian.xsrf.token = ALMX-0SVV-VVCK-3Y73 | c420e5bfab5c997ccdfa21ffa129d60a69af0013 | lin; Pfad = /; Sichere X-ASESSIONID: b2v6it X-AUSERNAME: admin X-ATENANT-ID: clientname.atlassian.net Cache-Kontrolle: no-cache, no-store, no-transform X-Inhalt-Typ-Optionen: nosniff Strict-Transport- Sicherheit: max-age = 315360000; includeSubDomains

Wie oben Fiddler Protokoll ist etwas, was ich in web.config-Datei ändern müssen, damit es funktioniert?

wenn vom WCF-Test-Client aufgerufen. Hier ist was ich versucht habe:

Web.config:

<?xml version="1.0"?>
  <configuration>
  <!--<system.net>
   <defaultProxy useDefaultCredentials="true" >
  </defaultProxy>
 </system.net>-->
<appSettings>
<add key="UserName" value="admin"/>
<add key="Password" value="admin"/>
<add key="resturl" value="https://Clientname.atlassian.net/rest/api/2/"/>
<add key="aspnet:UseTaskFriendlySynchronizationContext" value="true" />
</appSettings>
 <system.web>
  <compilation debug="true" targetFramework="4.5" />
  <httpRuntime targetFramework="4.5"/>
 </system.web>
 <system.serviceModel>
  <bindings>
  <basicHttpBinding>
    <binding name="BasicHttpBinding_IJiraService"/>
    </basicHttpBinding>
    </bindings>
   <client>
     <endpoint address="http://localhost:19065/JiraService.svc"  binding="basicHttpBinding"
        bindingConfiguration="BasicHttpBinding_IJiraService" contract="ServiceReference1.IJiraService"
       name="BasicHttpBinding_IJiraService" />
    </client>
    <behaviors>
     <serviceBehaviors>
       <behavior>
         <!-- To avoid disclosing metadata information, set the values below to false before deployment -->
         <serviceMetadata httpGetEnabled="true" httpsGetEnabled="true"/>
        <!-- To receive exception details in faults for debugging purposes, set the value below to true.  Set to false before deployment to avoid disclosing exception information -->
      <serviceDebug includeExceptionDetailInFaults="false"/>
       </behavior>
       </serviceBehaviors>
      </behaviors>
      <protocolMapping>
      <add binding="basicHttpsBinding" scheme="https" />
   </protocolMapping>    
   <serviceHostingEnvironment aspNetCompatibilityEnabled="true"   multipleSiteBindingsEnabled="true" />
  </system.serviceModel>
  <system.webServer>
  <modules runAllManagedModulesForAllRequests="true"/>
   <!--
    To browse web app root directory during debugging, set the value below to true.
    Set to false before deployment to avoid disclosing web app folder information.
  -->
  <directoryBrowse enabled="true"/>
 </system.webServer>

</configuration>

Hier ist, wie ich in meinem Code anfordere:

public class Service : IService
{
    private string GetRestURL()
    {
        return System.Configuration.ConfigurationManager.AppSettings["resturl"];
    }

    private string GetUserName()
    {
        return System.Configuration.ConfigurationManager.AppSettings["MyUserName"];
    }

    private string GetPassword()
    {
        return System.Configuration.ConfigurationManager.AppSettings["MyPassword"];
    }

 public string method()
 {
       HttpWebRequest request = WebRequest.Create(url) as HttpWebRequest;
        // HttpClient 


        request.ContentType = "application/json; charset=UTF-8";
        //request.ContentType = "text/xml; charset=UTF-8";
        /*request.Headers.Add("X-Atlassian-Token", "nocheck");
        request.UseDefaultCredentials = true;
        request.KeepAlive = true;*/
        request.Method = method;

        /*if (data != null)
        {
            using (StreamWriter writer = new StreamWriter(request.GetRequestStream(),Encoding.ASCII))
            {
                writer.Write(data);
            }
        }*/
        string base64Credentials = GetEncodedCredentials();
        request.Headers.Add("Authorization", "Basic " + base64Credentials);



     try
     {
        request.Headers.Add("Authorization", "Basic " + base64Credentials);

        response = request.GetResponse() as HttpWebResponse; //here its NULL

        if (response.StatusCode != HttpStatusCode.OK)
        {
                throw new Exception(String.Format("Server error (HTTP {0}:{1}).",response.StatusCode,response.StatusDescription));
        }
    }
    catch (Exception ex) //Here I'm getting exception
    {
        throw new Exception(ex.Message);
    }
 }

Hier ist meine Methodensignatur:

[ServiceContract]
public interface IService
{
    [OperationContract]
    List<ProjectDescription> GetProjects();
 }

Hinweis: Die "Methode" wird von "GetProjects" aufgerufen

Dies ist die innere Ausnahme, die ich beim Debuggen erhalte, indem ich den WCF-Test-Client aufruft:

Das ist eine innere Ausnahme

Ein Verbindungsversuch ist fehlgeschlagen, weil der verbundene Teilnehmer nach einer gewissen Zeit nicht ordnungsgemäß reagiert hat oder die Verbindung fehlgeschlagen ist, weil der verbundene Host nicht reagiert hat 165.254.xxx.xxx:443

Hinweis: Es gibt keine Debug-Ausnahme, wenn ich von der Konsolenanwendung debuggen. Wie gesagt, die Konsolenanwendung funktioniert gut und ich kann das Ergebnis aus dem Service zurückgeben.

UPDATE: Wenn ich diesen Dienst in der Konsolenanwendung als "Verweis hinzufügen" hinzufüge, funktioniert es gut. Wenn ich jedoch in derselben Konsolenanwendung als "Dienstreferenz hinzufügen" hinzufüge, wird derselbe Fehler angezeigt. Ist es mein Web blockiert etwas? Bitte helfen Sie.

Wie behebe ich das? Gibt es noch etwas, das ich in web.config hinzufügen web.config ? ODER muss ich die URL als vertrauenswürdige URL irgendwo zulassen?



Problem gelöst durch Hinzufügen von Proxy in IIS. :)