ws.UseDefaultCredentials = true; Wind. Mobile 2003; C#; (CC)

1. Juli 2011 10:04

Guten Tag,

ich will einen Navision Webservice von einem Windows Mobile 2003 Gerät aus starten.

Der Webservice ist richtig eingerichtet und funktioniert in einer Konsolenanwendung perfekt.

Wenn ich jedoch für Windows Mobile programmiere bekomme ich hier einen Fehler:

Code:
               
ws.UseDefaultCredentials = true;
ws.Url = "http://URL";


Habe ich etwas nicht eingebunden? Habe gesehen dass es "UseDefaultCredentials" in .NET 3.5 gar nicht mehr gibt. Was muss ich verwenden?

Ohne funktioniert die Authentifizierung nicht.

Vielen dank im voraus,

mfg

Magon

Re: ws.UseDefaultCredentials = true; Wind. Mobile 2003; C#;

1. Juli 2011 10:24

Wenn ich nicht ganz daneben bin, kann das so nicht funktionieren. Dein WinMobile ist doch bestimmt nicht in der Domäne, oder?

http://stackoverflow.com/questions/1785260/how-to-do-authentication-between-a-webservice-and-a-mobile-phone zeigt wie man User und Kennwort übergibt. Dann könnte es gehen.

Volker

Re: ws.UseDefaultCredentials = true; Wind. Mobile 2003; C#;

1. Juli 2011 10:42

Hallo,

danke für den Link. Richtig ich bin nicht in der Domäne.

Nur, kann ich diese anleitung in einer Codeunit überhaupt umsetzen? Ich hoffe was ich will ist überhaupt möglich.

Ich verwende also den SQL Benutzer wie ich das verstanden habe?

mfg

Magon

Re: ws.UseDefaultCredentials = true; Wind. Mobile 2003; C#;

1. Juli 2011 10:49

Hab ich jetzt irgendwas falsch verstanden?

Du hast doch einen Webservice, der irgendeine Page und/oder Codeunit von NAV veröffentlicht. Auf diese Funktion willst Du von WinMobile zugreifen. Richtig?

Falls Ja, gehört das was in em Link steht in Dein Programm auf dem WinMobile, in NAV hat das nix zu suchen.

Volker

Re: ws.UseDefaultCredentials = true; Wind. Mobile 2003; C#;

1. Juli 2011 18:09

Hi Magon,


ws.UseDefaultCredential gibts im .Net Compact Framework gar nicht.


Du muss mit Credential arbeiten.



Gruß
Aydin

Re: ws.UseDefaultCredentials = true; Wind. Mobile 2003; C#;

3. Juli 2011 11:02

Vielleicht hilft dir dieser Artikel weiter: http://blogs.msdn.com/b/freddyk/archive ... ile-6.aspx.

Re: ws.UseDefaultCredentials = true; Wind. Mobile 2003; C#;

5. Juli 2011 09:25

Guten Morgen,

vielen dank für eure Antworten, das hat mir echt sehr geholfen. Ich habe jetzt ein kleines PDA Programm erstellt, leider funtioniert die Verbindung noch nicht. Eventuell könnt ihr mir ja meinen Fehler sehen.

Code:
using System;
using System.Windows.Forms;
using WebServicePDA_Test.Insert;
using WebServicePDA_Test.SystemService;
using System.Net;

namespace WebServicePDA_Test
{
    public partial class frmWebServiceTest : Form
    {
        public frmWebServiceTest()
        {
            InitializeComponent();
        }

        private void btnInsert_Click(object sender, EventArgs e)
        {
            try
            {
                string InsertURL = "http://PCNAME:7047/DynamicsNAV/WS/Codeunit/Instert";
                string ssURL = "http://PCNAME:7047/DynamicsNAV/WS/SystemService";

                NetworkCredential credentials = new NetworkCredential(@"DOMÄNE\USERNAME", "PASSWORT?", "PCAUFDEMNAVUNDWEBSERVICE");

                SystemService.SystemService ss = new WebServicePDA_Test.SystemService.SystemService();
                ss.Credentials = credentials;
                ss.Url = ssURL;
               
                Insert.Instert ins = new Insert.Instert();
                ins.Credentials = credentials;
                ins.Url = InsertURL;

                string name = "Tony";
                ins.Insert(name);
            }
            catch (System.Exception Exc1)
            {
                txbError.Text = Exc1.ToString();
            }
        }
    }
}
 


Ich bedanke mich schon im Vorraus! Der bringt eine Fehlermeldung mit "SOAP" auf dem PDA, von der Logik sehen ich keine Fehler.

Mfg

Master123of
Zuletzt geändert von Magon am 5. Juli 2011 11:16, insgesamt 1-mal geändert.

Re: ws.UseDefaultCredentials = true; Wind. Mobile 2003; C#;

5. Juli 2011 10:59

Hi Magon,


SoapException sind die Fehler aus Navision. Also die Codeunit oder was du da aufrufst erzeugt einen NAV Error.


Musst du abfangen:-)
Ruf mal direkt in NAV die Codeunit auf, wirst bestimmt die gleiche Fehlermeldung bekommen:-)


Gruß
Aydin

Re: ws.UseDefaultCredentials = true; Wind. Mobile 2003; C#;

5. Juli 2011 11:14

Danke für deine Antwort!

Also wenn ich die Codeunit direkt im Navision ausführe passiert garnichts, was auch recht Logisch ist, die Codeunit nimmt nur den Wert den man ihr gibt und schreibt ihn in eine Tabelle, dann gibt sie einen wert zurück.

Über eine Konsolenapplikation funktioniert dieser WebService schon.

Re: ws.UseDefaultCredentials = true; Wind. Mobile 2003; C#;

5. Juli 2011 11:22

Hi,


gib anstelle Exception "SopaException" aus. Also sopaEx.Message.
Using (Namensspace) musst du mal in google suchen und einbinden.

Nachtrag: "using" System.Web.Services.Protocols einbinden.

Dann wissen wir näheres. Es kann auch evtl an rechten liegen, dass der Webservice bestimmte rechte nicht hat.

Meld dich dann wieder:-)

Re: ws.UseDefaultCredentials = true; Wind. Mobile 2003; C#;

5. Juli 2011 12:20

Wenn ich das so mache:

Code:
            catch (System.Exception Exc1)
            {
                txbError.Text = Exc1.Message;
                //txbError.Text = SoapException.toString();
            }


Und ich oben den Namespace einbinde gibt er mir folgendes aus: "WebException" nicht sehr aussagekräftig?

Re: ws.UseDefaultCredentials = true; Wind. Mobile 2003; C#;

5. Juli 2011 12:23

Code:
 catch (System.Exception Exc1)
            {
                txbError.Text = Exc1.Message;
                //txbError.Text = SoapException.toString();
            }



Ich dachte eher an sowas:

Code:
 catch (SoapException sopEx)
            {
                txbError.Text = sopEx.Message;
            }



Vorher natürlich "using" System.Web.Services.Protocols einbinden.

Re: ws.UseDefaultCredentials = true; Wind. Mobile 2003; C#;

5. Juli 2011 12:28

Da gibt er mir den Fehler nicht aus sondern schmeißt einen Error

"An unexpected Error has occurred in ....exe. Select "Quit"...

Re: ws.UseDefaultCredentials = true; Wind. Mobile 2003; C#;

5. Juli 2011 13:23



Hier mal der Fehler damit wir nicht aneinander vorbeireden

Re: ws.UseDefaultCredentials = true; Wind. Mobile 2003; C#;

5. Juli 2011 13:34

So wie ich das sehe ist das nun ein WebException. Er kriegt die Verbingung zum Webservice nicht.
Hast bestimmt keinen Empfang.


Also noch ein catch mit Webexception. Wieder das gleiche Spiel mit webEx.Message.

Code:
catch(SoapException spEx)
{
..
}
catch(WebException WebEx)
{
..
}




Wie ist die Funkverbindung, wahrscheinlich musst du etwas warten.

Re: ws.UseDefaultCredentials = true; Wind. Mobile 2003; C#;

5. Juli 2011 13:56

Bei

Code:
            catch(WebException WebEx)
            {
                txbError.Text = WebEx.ToString();
            }


gibt er die Fehlermeldung wie auf dem Bild aus, wenn ich ".Message" verwende dann schreibt er nur "WebException" :-(

Re: ws.UseDefaultCredentials = true; Wind. Mobile 2003; C#;

5. Juli 2011 14:28

Code:
 catch (SoapException soapEx)
  {
     MessageBox.Show(soapEx.Message); //NAV Error
  }
 catch (WebException webEx)
   {
     MessageBox.Show(webEx.Message); //Verbindungsfehler
   }       



Du kannst aber erstmal die Exceptions weglassen, wenn du mit der Fehlermeldung nichts anfangen kannst. Dann solltest du Debuggen, um zu sehen welcher Befehl nicht ausgeführt wird?

Also kriegst du keine Verbindung. Versuch mal deine Webverweise zu aktualisieren.
Ist der User auch als Windows User in der Datenbak angelegt?
Mit Super rechten?

HAt die Verbindung schon mal funktioniert?

Den Webservice ruhig mal neustarten.

Welche Ressourcen stehen zur Verfüguung (Entwicklungsumgebung, Sprache, Framework....). Kurze Beschreibung wäre nicht schlecht.


Gruß
Aydin

Re: ws.UseDefaultCredentials = true; Wind. Mobile 2003; C#;

5. Juli 2011 15:08

Vielen vielen dank für deine Antworten!

Habe den Code für die beiden Catch Fälle mal genau so eingebaut wie du.

1: "WebException"
2: erscheint nicht.

- Wie aktualisiere ich die Webverweise? (Die Referenzen neu hinzufügen?
- Ich bin als Windows User in Navision Angelegt (natürlich mit Super rechten), habe gesehen dass ich in SQL als "dbo" angelegt bin, wenn ich der app als Name "dbo" gebe kommt der selbe Fehler, habe jetzt eine Kollegin von mir in Navision mit Superrechten und in SQL mit dbowner rechten angelegt und diese verwendet => Selber Fehler
- Den Webservice neu starten bringt nichts
- Die Verbindung? Also die verbindung PDA <=> Netzwerk, PDA <=> Internet, zu sql datenbank auf dem selben PC usw. hat alles schonmal funktioniert, mit webservices habe ich noch nichts gemacht (merkt man bestimmt :roll: )
- Ich arbeite in Visual Studio 2008 und arbeite mit C#, verwende das .NET Framework 3.5

Neue Frage: Was muss ich als "Domain" überhaupt übergeben? Habe da den Computernamen (aka Servername) übergeben?

Gruß

Magon

Re: ws.UseDefaultCredentials = true; Wind. Mobile 2003; C#;

5. Juli 2011 15:22

Im ProjektExplorer stehen die Webverweise (Rechte Maustaste und dann auf aktualieren).

Domain ist nicht der Servername. Habt ihr keinen Administrator in der Firma, der das ganze Netzwerk eingerichtet hat?
Vielleicht kannst du die Domaine auch weglassen, Versuch dann mal. Könnte funktionieren, aber als Windows user solltest du in einer Domaine sein.

Also Webservice und SQL Datenbank liegen auf dem gleichen Server. Richtig?

Wenn du direkt deine Webverweise in den InternetExplorer eingibst, dann siehst du deine freigegebenen Objekte? Nehm ich mal sn sonst würde du diese nicht einbinden können. Kannst es aber noch mal auf die schnelle testen. Vom Server aus und von deinem lokalen Rechner aus.

Weißt du nun welcher Befehl nicht ausgeführt wird? Hast du nun gedebuggt?

Keine Sorge ich habe selber mit dem Webservice auch erst im Februar angefangen. Das Kommt mit der Zeit:-)

Re: ws.UseDefaultCredentials = true; Wind. Mobile 2003; C#;

5. Juli 2011 22:40

Benutz bitte mal den SystemService (ss) und lass dir die Mandanten anzeigen. Oder: Der Insert-Service dürfte nicht funktionieren, da ein Insert ohne den ausgewählten Mandanten (http://server:7047/DynamicsNAV/WS/CRONU ... nit/Insert) nicht funktioniert.

Aber ob das der Grund für die Exception ist, das musst du mir sagen :)

Re: ws.UseDefaultCredentials = true; Wind. Mobile 2003; C#;

6. Juli 2011 09:38

Hi Sylver,


das könnte die Ursache sein, weil NAV nicht weiß wohin mit den Daten, falls mehrere Mandanten vorhanden sind.

Also der Link sollte schon so sein bei den Webverweisen:
http://servername:7047/DynamicsNAV/ws/CRONUS AG/Codeunit/"name"

Bei dir Mogan:
http://PCNAME:7047/DynamicsNAV/WS/"Mandant"/Codeunit/Instert


Gruß
Aydin

Re: ws.UseDefaultCredentials = true; Wind. Mobile 2003; C#;

8. Juli 2011 13:32

Ah genau daran hat es gelegen! Vielen dank euch allen! Super Forum!

mfg

Magon