WCF Service Returning "Methode nicht erlaubt"
In den Prozess der Entwicklung von meinem ersten WCF service und wenn ich versuche, es zu benutzen ich bekomme "Methode nicht Erlaubt" keine andere Erklärung.
Habe ich mein interface eingerichtet, mit dem ServiceContract und OperationContract:
[OperationContract]
void FileUpload(UploadedFile file);
Zusammen mit der eigentlichen Methode:
public void FileUpload(UploadedFile file) {};
Zugriff auf den Service, den ich eingeben http://localhost/project/myService.svc/FileUpload
aber ich bekomme die "Methode nicht Erlaubt" - Fehler
Bin ich etwas fehlt?
InformationsquelleAutor der Frage jdiaz | 2008-09-03
Du musst angemeldet sein, um einen Kommentar abzugeben.
Ihren browser sendet eine HTTP GET-Anforderung: Stellen Sie sicher, dass Sie die WebGet-Attribut auf den Betrieb im Vertrag:
InformationsquelleAutor der Antwort Ries
Wenn Sie die
[WebInvoke(Method="GET")]
- Attribut auf die service-Methode, stellen Sie sicher, dass Sie buchstabieren den Namen der Methode "GET" und nicht "Bekommen" oder "erhalten", da die groß-und Kleinschreibung! Ich hatte den gleichen Fehler, und es kostete mich eine Stunde, um das herausfinden.InformationsquelleAutor der Antwort darthjit
Den grundlegenden intrinsischen Typen (z.B.
byte
,int
,string
und arrays) werden automatisch serialisiert, die von WCF. Benutzerdefinierte Klassen, wie Sie Ihre UploadedFile, nicht.So, eine dumme Frage (aber ich muss es Fragen...): UploadedFile ist gekennzeichnet als ein
[DataContract]
? Wenn nicht, werden Sie brauchen, um sicherzustellen, dass es ist, und dass jeder von den Mitgliedern in der Klasse, die Sie senden möchten, sind gekennzeichnet mit [DataMember].Im Gegensatz remoting, wo die Markierung einer Klasse mit [XmlSerializable] erlaubt Sie zu serialisieren, die ganze Klasse ohne Mühe zu machen, markieren Sie die Elemente, die Sie wollte serialisiert, WCF braucht Sie zum markieren jedes Mitglied. (Ich glaube, das ändert sich in .NET 3.5 SP1...)
Eine enorme Ressource für die WCF-Entwicklung ist, was wir kennen in unserem shop als "das Fisch-Buch": Programming WCF Services von Juval LÖWY. Im Gegensatz zu einigen der anderen WCF-Bücher, die sind etwas trocken und akademisch, das braucht ein praktischer Ansatz für den Aufbau von WCF-Diensten und ist tatsächlich nützlich. Gründlich empfohlen.
InformationsquelleAutor der Antwort Jeremy McGee
Es klingt wie Sie sind mit einer falschen Adresse:
Vorausgesetzt, du meinst diese Adresse geben Sie Ihren client-code dann habe ich vermute, es sollte eigentlich sein:
InformationsquelleAutor der Antwort Ubiguchi
Ich habe das gleiche problem seit über einem Tag nun - endlich kapiert. Dank @Sameh für den Hinweis.
Ihr service ist wahrscheinlich gut arbeiten. Test-POST Nachrichten mit der Adressleiste eines Browsers wird nicht funktionieren. Sie müssen verwenden Sie Fiddler, um zu testen, eine POST-Meldung.
Fiddler Anweisungen...
http://www.ehow.com/how_8788176_do-post-using-fiddler.html
InformationsquelleAutor der Antwort flobadob
Nur Methoden, die mit WebGet zugegriffen werden kann, aus dem browser IE ; Sie können auf andere http-Verben nur durch Eingabe von Adresse
Können Sie entweder versuchen, Restful-service-startup-kit von codeples oder fiddler testen Sie Ihre andere http-Verben
InformationsquelleAutor der Antwort Sameh
müssen Sie im web.config
InformationsquelleAutor der Antwort sandeep
Meinem Fall: konfigurieren der service auf dem neuen server. ASP.NET 4.0 wurde nicht installiert bzw. ordnungsgemäß registriert; die svc-Erweiterung wurde nicht erkannt.
InformationsquelleAutor der Antwort dudeNumber4