Immer 403 Forbidden-Fehler. Die HTTP-Anfrage war verboten, mit client-Authentifizierungsschema "Anonym"

Diesem Problem, das ich habe, nicht geschehen, für die Kunden, die auf unsere Dienstleistungen zugreifen, aber was ist konstant ist, dass, wenn die Fehlermeldung Auftritt, es geschieht auf die gleiche service-Aufruf für eine Handvoll Kunden.

Hier sind die details der Ausnahme:

System.ServiceModel.Sicherheit.MessageSecurityException Die HTTP-Anforderung
wurde verboten mit client-Authentifizierungsschema "Anonym".
System.ServiceModel.Sicherheit.MessageSecurityException: HTTP
Anfrage war verboten, mit client-Authentifizierungsschema "Anonym".
> ---> System.Net.WebException: Der Remoteserver hat einen Fehler zurückgegeben: (403) Verboten. System.Net.HttpWebRequest.GetResponse() an
System.ServiceModel.- Kanäle.HttpChannelFactory.HttpRequestChannel.HttpChannelRequest.WaitForReply(TimeSpan
timeout) --- Ende der inneren Ausnahme-stack-trace - - - - Server
stack trace: bei
System.ServiceModel.Security.IssuanceTokenProviderBase1.DoNegotiation(TimeSpan
timeout) at
System.ServiceModel.Security.SspiNegotiationTokenProvider.OnOpen(TimeSpan
timeout) at
System.ServiceModel.Security.TlsnegoTokenProvider.OnOpen(TimeSpan
timeout) at
System.ServiceModel.Security.WrapperSecurityCommunicationObject.OnOpen(TimeSpan
timeout) at
System.ServiceModel.Channels.CommunicationObject.Open(TimeSpan
timeout) at
System.ServiceModel.Security.CommunicationObjectSecurityTokenProvider.Open(TimeSpan
timeout) at
System.ServiceModel.Security.SecurityUtils.OpenTokenProviderIfRequired(SecurityTokenProvider
tokenProvider, TimeSpan timeout) at
System.ServiceModel.Security.SymmetricSecurityProtocol.OnOpen(TimeSpan
timeout) at
System.ServiceModel.Security.WrapperSecurityCommunicationObject.OnOpen(TimeSpan
timeout) at
System.ServiceModel.Channels.CommunicationObject.Open(TimeSpan
timeout) at
System.ServiceModel.Channels.SecurityChannelFactory
1.ClientSecurityChannel1.OnOpen(TimeSpan
timeout) at
System.ServiceModel.Channels.CommunicationObject.Open(TimeSpan
timeout) at
System.ServiceModel.Security.SecuritySessionSecurityTokenProvider.DoOperation(SecuritySessionOperation
operation, EndpointAddress target, Uri via, SecurityToken
currentToken, TimeSpan timeout) at
System.ServiceModel.Security.SecuritySessionSecurityTokenProvider.GetTokenCore(TimeSpan
timeout) at
System.IdentityModel.Selectors.SecurityTokenProvider.GetToken(TimeSpan
timeout) at
System.ServiceModel.Security.SecuritySessionClientSettings
1.ClientSecuritySessionChannel.OnOpen(TimeSpan
timeout) bei
System.ServiceModel.- Kanäle.CommunicationObject.Open(TimeSpan
timeout) bei
System.ServiceModel.- Kanäle.ServiceChannel.OnOpen(TimeSpan-timeout)

System.ServiceModel.- Kanäle.CommunicationObject.Open(TimeSpan
timeout) bei
System.ServiceModel.Channels.ServiceChannel.CallOpenOnce.System.ServiceModel.Channels.ServiceChannel.ICallOnce.Call(ServiceChannel
channel, TimeSpan timeout) bei
System.ServiceModel.- Kanäle.ServiceChannel.CallOnceManager.CallOnce(TimeSpan
timeout, CallOnceManager cascade) bei
System.ServiceModel.- Kanäle.ServiceChannel.EnsureOpened(TimeSpan
timeout) bei
System.ServiceModel.- Kanäle.ServiceChannel.Call(String Aktion,
Boolean oneway, ProxyOperationRuntime operation, Object[] ins,
Object[] outs, TimeSpan timeout) bei
System.ServiceModel.- Kanäle.ServiceChannel.Call(String Aktion,
Boolean oneway, ProxyOperationRuntime operation, Object[] ins,
Object[] outs) bei
System.ServiceModel.- Kanäle.ServiceChannelProxy.InvokeService(IMethodCallMessage
methodCall, ProxyOperationRuntime-Betrieb) bei
System.ServiceModel.- Kanäle.ServiceChannelProxy.Invoke(IMessage
Nachricht) Ausnahme erneut ausgelöst, auf [0]: bei
System.- Laufzeit.Remoting.Proxys.RealProxy.HandleReturnMessage(IMessage
reqMsg, IMessage retMsg) bei
System.- Laufzeit.Remoting.Proxys.RealProxy.PrivateInvoke(MessageData&
msgData, Int32-Typ) an
> Proxy.FileTransferService.IFileTransferService.EstablishProxy(DownloadRequest
Anfrage)
bei Proxy.FileTransferService.FileTransferServiceClient.
Proxy.FileTransferService.IFileTransferService.EstablishProxy(DownloadRequest
request) an NormalFileTransferServiceClient.Download(Int32
packageId, IStreamWriter downloader, Archivar Archivar) an
LoggingFileTransferServiceClient.Download(Int32 packageId, Tritt

Diese Ausnahme wird ausgelöst, indem der Kunde.

Den client-proxy-Konfiguration für IFileTransferService ist:

<binding name="WSHttpBinding_IFileTransferService" closeTimeout="00:01:00"
  openTimeout="00:01:00" receiveTimeout="00:10:00" sendTimeout="00:01:00"
  bypassProxyOnLocal="false" transactionFlow="false" hostNameComparisonMode="StrongWildcard"
  maxBufferPoolSize="524288" maxReceivedMessageSize="65536" messageEncoding="Mtom"
  textEncoding="utf-8" useDefaultWebProxy="true" allowCookies="false">
  <readerQuotas maxDepth="32" maxStringContentLength="8192" maxArrayLength="16384"
    maxBytesPerRead="4096" maxNameTableCharCount="16384" />
  <reliableSession ordered="true" inactivityTimeout="00:10:00"
    enabled="false" />
  <security mode="Message">
    <transport clientCredentialType="Windows" proxyCredentialType="None"
      realm="" />
    <message clientCredentialType="UserName" negotiateServiceCredential="true"
      algorithmSuite="Default" establishSecurityContext="true" />
  </security>
</binding>

  <endpoint address="http://[hostname]/FileTransferService.svc/FileTransfer"
    binding="wsHttpBinding" bindingConfiguration="WSHttpBinding_IFileTransferService"
    contract="Proxy.FileTransferService.IFileTransferService"
    name="WSHttpBinding_IFileTransferService">
    <identity>
      <certificate encodedValue="a long string"/>
    </identity>
  </endpoint>

Der service-Konfiguration

<service behaviorConfiguration="ServiceBehavior" 
    name="Services.FileTransferService">
        <endpoint name="WSHttpBinding_IFileTransferService" 
       binding="wsHttpBinding" 
       bindingConfiguration="MtomWSHttpBinding" 
       contract="Services.IFileTransferService" 
       address="/FileTransfer"/>
        <endpoint binding="basicHttpBinding" 
       bindingConfiguration="FileTransferServicesBinding" 
       contract="Services.IFileTransferService"/>
        <host>
          <baseAddresses>
            <add baseAddress="http://[hostname]/FileTransferService.svc"/>
          </baseAddresses>
        </host>
</service>

<binding name="wsHttpBinding" 
         maxReceivedMessageSize="2147483647" 
         receiveTimeout="5" 
         useDefaultWebProxy="false">
      <readerQuotas maxDepth="2147483647" 
             maxStringContentLength="2147483647" 
             maxArrayLength="2147483647" 
             maxBytesPerRead="2147483647" 
             maxNameTableCharCount="2147483647" />
  <security mode="Message">
    <message clientCredentialType="UserName" />
  </security>
</binding>

<basicHttpBinding>
    <binding name="FileTransferServicesBinding" 
           maxReceivedMessageSize="10067108864" 
           messageEncoding="Mtom" 
           transferMode="Streamed" 
           useDefaultWebProxy="false">
      <security mode="None">
        <message clientCredentialType="UserName" />
      </security>
    </binding>
  </basicHttpBinding>

Hinweis: einige Kunden sind mit der basicHttpBinding (wenn ich alles richtig). In späteren client-Version, die möglicherweise nicht vollständig verteilt (das ist, warum ich die support-2-version), änderte ich den proxy zu verwenden, das wsHttpBinding Endpunkt statt. Ich Frage mich, ob diese Fehler, ich bin immer spezifisch für basicHttp und wenn ja, vielleicht habe ich nicht diese Konfigurationen korrekt eingerichtet ist. Ich bin unter der Annahme, dass die clients immer diese Fehler 403 sind mit wsHttpBinding.

Hier ist der code für den service:

public RemoteBinaryInfo EstablishProxy(DownloadRequest request)
{
    int packageId = request.PackageId;

    System.IO.MemoryStream stream = new System.IO.MemoryStream(packageRepository.GetPackageBinary(packageId));

    DisposeStreamWhenOperationIsComplete(stream, OperationContext.Current);

    RemoteBinaryInfo result = new RemoteBinaryInfo();
    result.Length = stream.Length;
    result.MemoryByteStream = stream;
    return result;

}

private static void DisposeStreamWhenOperationIsComplete(System.IO.MemoryStream stream, OperationContext clientContext)
{
    clientContext.OperationCompleted += new EventHandler(delegate(object sender, EventArgs args)
    {
        if (stream != null)
            stream.Dispose();
    });
}

Hat jemand wissen, wenn das loswerden von dieser Ausnahme ist etwas, was innerhalb meiner Kontrolle? Gibt es irgendwelche änderungen an der Konfiguration, die ich machen kann auf entweder der client-oder service-config-Dateien?

Wenn Sie brauchen mehr Informationen von mir bitte lass es mich wissen.

  • Wenn nicht schon geschehen, sollten Sie versuchen, stellen Sie eine einfache "hello world" - Methode, um das problem einzugrenzen.
InformationsquelleAutor SideFX | 2011-10-19
Schreibe einen Kommentar