2010-02-22 4 views
5

Ich habe gerade versucht, einen WebService (asmx-basiert) von einem WebForms-Projekt zu einem neuen MVC-Projekt hinzuzufügen. Ich kann nicht auf den asmx Webservice in IE kommen?Funktionieren Standard-Webservices (asmx) mit MVC?

In MVC sollte dies die gleiche Arbeit, habe ich den Dienst in einem Ordner Dienste, sollte dies in einer Ansicht sein oder sollte diese asmx Arbeit außerhalb der Routing ‚MVC‘?

Update:

ich die WebService zunächst in der ASMX-Datei auf einen Testserver, die vor kurzem Setup mit .Net 4.0 für VS2010 MVC 2-Projekt fällt einzurichten. (Windows Server 2003 IIS 6)

Derselbe Webservice ist auf einer Entwicklungsmaschine (VS 2010) sichtbar? Irgendwelche Ideen zum Unterschied, möglicherweise ein Setup-Problem?

+0

Die asmx-Datei enthält nur die "<% @ WebService ..." Direktive, die Klasse ist alle mit einer DLL im bin-Ordner enthalten ... –

+0

Ich konnte das as nicht bekommen, x zu arbeiten, auch wenn ich gerade Ich habe einen neuen/einfachen HelloWorld Web Service hinzugefügt, den ich in einen WCF Service umgewandelt habe und ihn nicht sehen kann, also werde ich damit fortfahren. –

+1

das ist gut. ASMX-Webdienste werden von Microsoft als "Legacy-Technologie" betrachtet. Alle neuen Web-Service-Entwicklung sollte WCF verwenden. –

Antwort

1

meine eigene Frage zu beantworten ..

Ich kann WCF-Dienste sehen, wenn eine Grundversorgung zu schaffen (und nicht asmx Dienste sehen)

Da WCF den Weg trotzdem gehen betrachtet wird, ich das tue.

Ich habe nicht versucht, die asmx zu arbeiten.

1

Wenn Sie die schnelle/einfache/schmutzige Lösung wünschen, ziehen Sie den ASMX-Dienst irgendwie aus dem MVC-Routing heraus.

Wenn Sie möchten, die Dinge besser Weise zu tun, ziehen Sie die Logik aus dem ASMX-Dienst und eine neue Seite für Sie es in Ihrer MVC-Anwendung erstellen. Sie können dann die Logik in Ihrem Controller implementieren und es der View ermöglichen, die SOAP-Nachricht zurückzugeben (oder Sie könnten mit JSON gehen, je nachdem, wer den Service nutzt).

+0

Die gesamte Logik befindet sich in einer WebService-Klasse in einer DLL.Der Webservice wird von einer Silverlight-Anwendung aufgerufen, nicht sicher, wie dies mit einem Controller geschehen würde? –

0

Es sollte außerhalb der MVC-Routing funktionieren. Es genügt, einen Ordner mit den asmx-Dateien zu erstellen. Ich habe einen "Webservices" Ordner in meinem Projekt, und es funktioniert super! Sie müssen das Routing nicht so einstellen, dass der Pfad ignoriert wird. Die Datei existiert auf dem Server.

2

Laut Scott Hanselman ist die Anforderung standardmäßig nicht durch die ASP.NET MVC Routing-Mechanismus behandelt:

Warum nicht ASP.NET MVC die Anforderung greifen? Zwei Gründe. Erstens gibt es eine Option für RouteCollection namens RouteExistingFiles. Es ist standardmäßig auf "false" gesetzt, was dazu führt, dass ASP.NET MVC das Routing automatisch überspringt, wenn eine Datei auf der Festplatte vorhanden ist. (Source)

Das würde anzeigen, dass es irgendwo anders ein Problem gibt.

1

Ja, es funktioniert, habe ich die Basis-Projekt dann mit der rechten ich auf dem Projektnamen geklickt und eine Webservice-Datei mit der Demo von Hallo Welt in hinzugefügt. Wenn Sie diese Datei im Browser anzeigen, funktioniert es einwandfrei.