C # 4.0 WCF REST JSON - HTTP GET CODE 400 Ungültige Anfrage

9

Wenn Sie versuchen, einen einfachen Dienst zu erstellen, um eine einfache JSON-Zeichenfolge zurückzugeben, indem Sie mehreren Lernprogrammen folgen. Ich stehe auf zwei verschiedenen Rechnern mit einer HTTP Statuscode 400 schlechten Anfrage fest. Beispiel-Tutorials RESTful WCF-Dienst mit JSON pt.1 & amp; Teil 2 - Ссылка

Ich habe auch Google und hier (StackOverflow) nach ähnlichen Problemen ohne Erfolg gesucht.

Das Problem ist, dass ich die 400 ungültige Anfrage bekomme, wenn ich versuche, eine Plausibilitätsprüfung durchzuführen, um zum WCF-Dienst zu navigieren und die Methode auszuführen. Indem Sie den Dienst kompilieren und diese Adresse durchsuchen: Ссылка Genau wie das Tutorial. Ich habe versucht, eine Lösung für 3 Tage zu finden. Jede Hilfe wird geschätzt.

Das mache ich.

Zuerst erstelle ich ein neues Projekt eine einfache WCF-Service-Anwendung. Ich lösche die Standard-Service1.svc und füge einen neuen WCF-Service hinzu, der eine neue Service1.svc und eine IService1.cs

generiert

Hier ist der Code für die Schnittstelle ( IService1.cs )

%Vor%

Hier ist der Code für die Service1.svc

%Vor%

Und die Web.config ist unberührt und sieht nach web.config

aus %Vor%     
user1087261 08.12.2011, 08:15
quelle

3 Antworten

12

Für REST WCF Sie müssen in web.config

Einstellungen für die Bindung und den Endpunkt vornehmen

Ersetzen Sie Ihre gesamte web.config, indem Sie folgen und es funktioniert

%Vor%

Sie blieben mit folgenden zwei Dingen

Verwenden Sie webHttpBinding (ändern Sie das Standard-http-Port-Mapping in webHttpBinding)

%Vor%

Geben Sie webHttp-Endpunktverhalten an

%Vor%     
Arun Rana 08.12.2011, 08:59
quelle
5

Sie haben keinen Endpunkt angegeben. Standardmäßig wird in WCF 4 ein Endpunkt verwendet, der basicHttpBinding verwendet. Es wird hier nicht funktionieren, da es sich um eine SOAP-basierte Bindung handelt. Was Sie verwenden möchten, ist WebHttpBinding, das REST-basiert ist ...

So überschreiben Sie die Standardbindung mit WCF 4:

%Vor%

Sie müssen auch webHttp aktivieren, indem Sie dieses Endpunktverhalten in Ihrer Konfiguration hinzufügen:

%Vor%

Ссылка

    
Romain Meresse 08.12.2011 08:30
quelle
1

Ich bin mir nicht ganz sicher, warum, aber als ich meiner .SVC-Datei das Attribut 'Factory' hinzugefügt habe (Sie müssen es explizit in Visual Studio ziehen), funktioniert nur - ohne Änderungen an den Standardeinstellungen in Web.config!

Ich habe Factory="System.ServiceModel.Activation.WebServiceHostFactory" hinzugefügt, sodass meine .SVC-Datei von dieser Datei abging:

<%@ ServiceHost Language="C#" Debug="true" Service="ServiceNameSpace.ServiceName" CodeBehind="ServiceName.svc.cs" %>

dazu:

<%@ ServiceHost Language="C#" Debug="true" Service="ServiceNameSpace.ServiceName" CodeBehind="ServiceName.svc.cs" Factory="System.ServiceModel.Activation.WebServiceHostFactory" %>

Der einzige Nebeneffekt scheint zu sein, dass Sie beim Klicken auf die .SVC-Datei im Browser den Fehler "Endpunkt nicht gefunden" erhalten, der Dienst jedoch einwandfrei funktioniert, wenn Sie ihn trotzdem korrekt aufrufen. Wie bereits erwähnt, verwende ich eine Standard-Web.config mit .NET 4.6 ( Vereinfachte WCF-Konfiguration ), daher muss ich möglicherweise noch Details zum Endpunkt hinzufügen, damit es wieder funktioniert.

Hinweis für den Moderator: Ich entschuldige mich dafür, diese Antwort zu einigen Fragen gepostet zu haben. Werde es nicht noch einmal tun. Ich glaube jedoch nicht, dass das Löschen von BEIDEN Fragen sehr ausgewogen war. Aus diesem Grund habe ich diese Antwort hier nur neu gepostet.

    
QA Collective 30.01.2018 05:35
quelle

Tags und Links