Dienstag, Januar 21, 2020

Wie kann ich untersuchen, WCF was 400 bad request über GET?

Die folgenden WCF-endpoint funktioniert gut mit dem WCF test client:

[OperationContract]
[WebGet(ResponseFormat = WebMessageFormat.Xml,
        BodyStyle = WebMessageBodyStyle.Bare,
        UriTemplate = "listflaggedassets/{platform}?endpoint={endpoint}&pid={portalid}&processCode={processCode}&index={index}&limit={limit}")]
AssetList ListFlaggedAssets(short processCode, string platform, string endpoint = "null", string portalId = "null", int index = 0, int limit = 12);

Jedoch, wenn ich versuche zu navigieren, um die URL http://localhost/DigitalREST/XosAssets.svc/listflaggedassets/SEC?endpoint=superfan&pid=0&processCode=0&index=0&limit=20 bekomme ich einen 400 bad request.

Ich kann nicht scheinen zu finden, jeder Weg, um herauszufinden, WARUM ich bin immer ein bad request, sowie das anbringen von IIS für das Debuggen bricht nicht über Ausnahmen.

Wie kann ich untersuchen, die Ursache für eine schlechte Anfrage?

InformationsquelleAutor KallDrexx | 2012-03-27

4 Kommentare

  1. 6

    Könnten Sie die Ablaufverfolgung aktivieren, und verwenden Sie Service Trace Viewer

    Lassen Sie diese in Ihre app.config (Protokollierung Quellen aus dieser Antwort):

    <system.diagnostics>
        <sources>
          <source name="System.ServiceModel"
                  switchValue="Information, ActivityTracing"
                  propagateActivity="true" >
            <listeners>
              <add name="xml"/>
            </listeners>
          </source>
          <source name="System.ServiceModel.MessageLogging">
            <listeners>
              <add name="xml"/>
            </listeners>
          </source>
          <source name="myUserTraceSource"
                  switchValue="Information, ActivityTracing">
            <listeners>
              <add name="xml"/>
            </listeners>
          </source>
        </sources>
        <sharedListeners>
          <add name="xml"
               type="System.Diagnostics.XmlWriterTraceListener"
               initializeData="TraceLog.svclog" />
        </sharedListeners>
      </system.diagnostics>

    Dann, öffnen Sie die TraceLog.svclog im Service Trace Viewer. Es kann Ihnen nicht sagen, was genau Los ist, aber es wird Informationen über den Verkehr und die Ausnahme selbst.

    Können Sie auch prüfen wollen, die Ausnahmen, die Sie aktiviert haben, in den debugger. Öffnen Sie In Visual Studio zu Debug -> Exceptions und prüfen Sie, ob Sie haben den richtigen Rahmen überprüft.

    • Danke. Während die Protokolle waren nicht hilfreich (einige interne xml-Fehler), ist Es zumindest Antworten auf meine Frage, wie invesitage diese WCF-Fehler. Etwas fubared entweder mit meinem lokalen IIS oder, web.config verursachen, es funktioniert alles aus der Ferne.
    • Kann man über diese Anleitung, um zu überprüfen, ob die installation der beiden ASP.NET und WCF.
  2. 0

    Der beste Weg wäre die Installation Fiddler und erfassen Sie Ihre Anfrage zusammen mit dem aktivieren von Tracing Ihren Dienst.

    Auch versuchen, entfernen Sie die BodyStyle, die Sie in der angegebenen WebGet Attribut und sehen, ob es funktionieren würde.

  3. 0

    Ein Grund dafür könnte sein, das ich gestoßen:

    Ich versuche zu verlangen, die über die URL mit querystring aber httpbinding war nicht in config-Datei und im Ergebnis war ich immer 400-Bad request Fehler.

  4. 0

    Können Sie versuchen, fiddler und auch versuchen, die svcTracer, die Ihnen möglicherweise viel debugging-Informationen auf der Oberseite können Sie es auch verwenden includeExceptionDetailInFaults=true Flagge auf dem server, aber es ist wichtig zu wissen, dass Ihr nicht immer Recht, diese Informationen zu senden, die client-speziell wenn der Kunde eine externe entity ist. Mit dieser Warnung im folgenden ist der Hinweis, wie es zu benutzen.

    <serviceBehaviors>
        <behavior name="ServiceBehavior">
        ....
            <serviceDebug includeExceptionDetailInFaults="true" />
        ....
        </behavior>
    </serviceBehaviors>

    Glücklich Debuggen 🙂

Kostenlose Online-Tests