Laden...

VS2010 Probleme mit ASMX??

Erstellt von tomschrot vor 13 Jahren Letzter Beitrag vor 13 Jahren 6.854 Views
T
tomschrot Themenstarter:in
73 Beiträge seit 2004
vor 13 Jahren
VS2010 Probleme mit ASMX??

Hallo,

ich bin quasi am verzweifeln. Seit zwei Tagen krieg ich folgendes nicht hin:

Umgebung ist Win7 Enterprise x64, IIS 7.5, VS 2010 Premium

Ich habe einen bestehenden (zum Test lokalen) Soap ASMX Dienst der erstmal nur 2 Webmethods hat.

string Ping(string anyText)

string ServiceID()

Die Seite läuft unter Framework 2.0.50727.

Die vom IIS lokal verfügbaren Testseiten werden korrekt angezeigt und beim Testen auch korrekt ausgeführt. Ich kann die Methoden auch via Firefox-Plugin "Poster" korrekt ansprechen (via POST):


<?xml version="1.0" encoding="utf-8"?>
<soap:Envelope xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:soap="http://schemas.xmlsoap.org/soap/envelope/">
  <soap:Body>
    <Ping xmlns="http://xxx/">
      <anyText>huhu</anyText>
    </Ping>
  </soap:Body>
</soap:Envelope>

<?xml version="1.0" encoding="utf-8"?><soap:Envelope xmlns:soap="http://schemas.xmlsoap.org/soap/envelope/" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema"><soap:Body><PingResponse xmlns="http://xxx/"><PingResult>[28.10.2010 11:25:55]: huhu</PingResult></PingResponse></soap:Body></soap:Envelope>

bzw.

<?xml version="1.0" encoding="utf-8"?>
<string xmlns="http://xxxxx.Mobile.Service/">xxxxx Web Service Version 0.1, yyyy GmbH</string>

Soweit alles im grünen Bereich.

Jetzt benötige ich einen Client mit dem ich auf den Dienst zugreife. Dazu lege ich in VS ein neues Projekt (WPF, Winform, Konsole...) an und füge einen Verweis zu dem obigen Dienst hinzu. Auch kein Problem, im Projektbaum erscheint der Dienst und die erforderlichen Referenzen werden erzeugt und hinzu gefügt. Der Aufruf einer Methode des Dienstes ist mit der erzeugten Proxy-Klasse trivial:


        private void _Button_Click(object sender, RoutedEventArgs e)
        {
            var client = new MobileSoapClient();
            try
            {
                Write(client.ServiceID());
            }
            catch (Exception ex)
            {
                Write(ex.Message);
                Write("");
                Write(ex.StackTrace);
                Write("");
            }
        }

Und hier liegt der Hase im Pfeffer. Der Aufruf via Client erzeugt immer(!!!) einen Fehler:

Der Inhaltstyp "text/html; charset=utf-8" der Antwortnachricht stimmt nicht mit dem Inhaltstyp der Bindung (text/xml; charset=utf-8) überein. Wenn Sie einen benutzerdefinierten Encoder verwenden, sollten Sie sicherstellen, dass die IsContentTypeSupported-Methode korrekt implementiert ist. Die ersten 1024 Bytes der Antwort waren: "

<html>

&lt;head&gt;&lt;link rel=&quot;alternate&quot; type=&quot;text/xml&quot; href=&quot;/yyyyy/Service/Mobile.asmx?disco&quot; /&gt;  

&lt;style type=&quot;text/css&quot;&gt;  

....

Es wird also nicht das XML des Soap Envelope geliefert, sondern das HTML der ASMX Seite? Ein Kollege hat aus dem WSDL einen Delphi Wrapper erzeugt und getestet was Funktioniert hat. Hier scheint es also irgendwo Probleme mit dem Generator von VS 2010 zu geben? Wer weiß Rat?

Schon mal Danke,
-TS

6.911 Beiträge seit 2009
vor 13 Jahren

Hallo,

guck mal What's New in Windows Communication Foundation unter Abschnitt "Target Framework Attribute"

Prüfe außerdem auf dem Client ob in der Konfiguration der Bindings-Abschnitt passt (basicHttpBinding) und ob das MessageEncoding korrekt ist (musst probieren was passt).

mfG Gü

Stellt fachliche Fragen bitte im Forum, damit von den Antworten alle profitieren. Daher beantworte ich solche Fragen nicht per PM.

"Alle sagten, das geht nicht! Dann kam einer, der wusste das nicht - und hat's gemacht!"

T
tomschrot Themenstarter:in
73 Beiträge seit 2004
vor 13 Jahren

Pass eigentlich:


           <basicHttpBinding>
                <binding name="MobileSoap" 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>

6.911 Beiträge seit 2009
vor 13 Jahren

Hallo,

hast du den Link auch verfolgt? Bzw. trifft etwas darin zu?

Siehe auch das ähnliche Problem.

Tipp: Bei Google mit den englischen Fehlermeldungen (wenn auch nur grob übersetzt) findest du mehr als mit der deutschen.

mfG Gü

Stellt fachliche Fragen bitte im Forum, damit von den Antworten alle profitieren. Daher beantworte ich solche Fragen nicht per PM.

"Alle sagten, das geht nicht! Dann kam einer, der wusste das nicht - und hat's gemacht!"