Wie konsumieren ein webservice in MVC?
Ich bin super neu auf MVC (in der Tat, dies ist mein Erster Einsatz)
So, ich habe eine gute webservice-running, funktional, auf meinem lokalen Rechner
http://www.codetrials.local/wcf/UserServices.svc?wsdl
und In meiner MVC Anwendung, ich fügte hinzu, eine service-Referenz wie üblich, und dann in mein Modell.cs ich versuche dieses:
using (CodeTrials.UserServicesClient _client = new UserServicesClient())
{
UserWebsite = _client.GetUserWebsite(username);
}
aber wenn ich versuche zu laufen, ich bekomme immer die Ausnahme endpoint not found
. Ich kann Zugriff auf diese aus meiner (verschiedene) asp.net Projekt-und es funktioniert Prima, denselben code und alles. Nach einiger Graben um, ich fand diese Antwort ich veränderte meinen obigen code:
BasicHttpBinding binding = new BasicHttpBinding();
EndpointAddress address = new EndpointAddress("http://www.codetrials.local/wcf/UserServices.svc");
using (CodeTrials.UserServicesClient _client = new UserServicesClient(binding, address))
{
UserWebsite = _client.GetUserWebsite(username);
}
aber nun bekomme ich eine neue exception: There was no endpoint listening at http://www.codetrials.local/wcf/UserServices.svc?wsdl that could accept the message
So, ich bin mit meinem Latein am Ende.
Ich stellte eine ähnliche Frage aber es ist nicht das, was ich Suche.
Können Sie bitte führe mich auf den richtigen Pfad?
was mache ich nicht richtig?
sollte ich eine Verschiebung der Konsum von webservice-vom Modell zum Controller?
Dank.
BEARBEITEN - Das ist meine config Datei system.serviceModel
Abschnitt. Ich kopiere einfach eingefügt es von der WCF-client-test-gui-tool in web.config, denn es war nicht erzeugt durch visual studio.
<system.serviceModel>
<bindings>
<basicHttpBinding>
<binding name="BasicHttpBinding_IUserServices" closeTimeout="00:01:00"
openTimeout="00:01:00" receiveTimeout="00:10:00" sendTimeout="00:01:00"
allowCookies="false" bypassProxyOnLocal="false" hostNameComparisonMode="StrongWildcard"
maxBufferSize="65536" maxBufferPoolSize="524288" maxReceivedMessageSize="65536"
messageEncoding="Text" textEncoding="utf-8" transferMode="Buffered"
useDefaultWebProxy="true">
<readerQuotas maxDepth="32" maxStringContentLength="8192" maxArrayLength="16384"
maxBytesPerRead="4096" maxNameTableCharCount="16384" />
<security mode="None">
<transport clientCredentialType="None" proxyCredentialType="None"
realm="" />
<message clientCredentialType="UserName" algorithmSuite="Default" />
</security>
</binding>
</basicHttpBinding>
</bindings>
<client>
<endpoint address="http://www.codetrials.local/wcf/UserServices.svc/wcf/UserServices.svc"
binding="basicHttpBinding" bindingConfiguration="BasicHttpBinding_IUserServices"
contract="IUserServices" name="BasicHttpBinding_IUserServices" />
</client>
</system.serviceModel>
Sie sollten nicht erforderlich sein, dass die Sachen in code, wenn Sie Ihre MVC-app hat ein korrektes system.servicemodel web.Eintrag config. Kannst du es posten?
Hinzugefügt, danke.
Hinzugefügt, danke.
du bist ein Lebensretter. Alle diese Zeit war ich versucht zu ändern
web.config
und wenn ich kompiliert habe, die web.debug.config
war überschrieben wird und somit kein end-Punkt. Nun, ich habe es direkt im debug-config und es ist alles in Ordnung. Kannst du deinen Kommentar als Antwort, so kann ich es akzeptieren? Danke.InformationsquelleAutor LocustHorde | 2011-08-15
Du musst angemeldet sein, um einen Kommentar abzugeben.
Umbuchung aus den Kommentaren, da es sich herausstellte, ist die Antwort. 🙂 Stellte sich heraus, dass die web -.debug.config wurde, überschreiben Sie die web -.config in diesem Fall.
Sind Sie sicher, dass Ihr in der richtigen web.config dann? VS sollte es schaffen, der automatisch beim hinzufügen der service Referenz (für mich zumindest). Eine gotcha ist, dass eine normale MVC-app verfügt über zwei web.config-Dateien, gibt es eine zweite innerhalb der Views-Ordner standardmäßig. Andere dann, dass, ich bin nicht wirklich sicher, was Los ist.
InformationsquelleAutor Tridus
Dein code zeigt, Sie sind mit dieser URL:
http://www.codetrials.local/wcf/UserServices.svc
Zugriff auf den service-Endpunkt, aber deine exception sagt, Sie sind eigentlich mithttp://www.codetrials.local/wcf/UserServices.svc?wsdl
statt.Überprüfen Sie Ihre MVC-web-app.config-Datei für eine serviceModel-element. Wenn Sie brauchen, um zu konfigurieren Sie die WCF-client im code dann entfernen Sie das gesamte element aus dem web.config-Datei, die sein können, in denen die falsche URL aus. Wenn Sie wollen, zu konfigurieren, WCF aus dem web.config-Datei, dann entfernen Sie Ihren aktuellen code ein, und verwenden Sie die folgenden zwei Zeilen an den client und rufen Sie den service:
wo die so etwas wie der folgende Abschnitt besteht in Ihrer Website.config serviceModel-element:
Schließlich sollten Sie nicht wickeln Sie die UserServicesClient Instanziierung in einer using-Anweisung, weil der Gründe skizziert in diesem Beitrag. WCF ist ein tricksty Tier....
BEARBEITEN:
Basierend auf der update-mit deiner config, dein problem kann sein, dass die service-URL ist:
http://www.codetrials.local/wcf/UserServices.svc/wcf/UserServices.svc
Den
wcf/UserServices.svc
scheint dupliziert werden.wcf/UserServices.svc
Hinzugefügt wird durch das VS selbst bin ich nicht manuell hinzufügen, und wenn das gleiche Zeug erzeugt wird, die durch die WCF-Client-test-tool gui, es ist die Arbeit mit der Doppel-Endung... ich bin verwirrt auch!InformationsquelleAutor Sixto Saez