15. Mai 2013 12:03
Hallo zusammen,
ich versuche gerade, dieses Tutorial nachzubauen:
http://msdn.microsoft.com/en-us/library/dd339004.aspxDort geht es um einen ganz einfachen Web Service mit einer Codeunit in einer C# Konsolenapplikation.
Ich habe alles 1:1 nachgebaut, bekomme aber beim Debug/Release der C# Applikation den Fehler "Rückruffunktionen sind nicht zulässig" (siehe Anhang).
Kennt jemand dieses Problem? Ich weiß nicht mehr weiter :(
VG
dannyt
Du hast keine ausreichende Berechtigung, um die Dateianhänge dieses Beitrags anzusehen.
Zuletzt geändert von dannyt am 15. Mai 2013 16:35, insgesamt 2-mal geändert.
15. Mai 2013 12:22
Ohne es jetzt getestet zu haben glaube ich, dass die den Verweis auf den Webservice nicht richtig gemacht hast.
Welche VS-Version? in neueren Version (ich meine nach 2005) Dienstverweis hinzufügen->erweitert->Webverweis hinzufügen (=.NET 2.0)
Volker
15. Mai 2013 12:27
Callback Exception passieren in der Regel, wenn in NAV ein Dialog erscheinen würde, wenn Du die Funktion in NAV manuell ausführen würdest.
15. Mai 2013 12:30
@vsnase:
Der Webverweis ist richtig, habe ich gerade nochmal geprüft.
Wenn ich die Webservice URL im Browser eingebe (die aus VS), bekomme ich die Funktion auch zu sehen...
@JanGD:
Meine CU besteht aus nur einer einzigen Codezeile, exakt wie im Tutorial beschrieben
- Code:
Capitalize(inputstring : Text[250]) outputstring : Text[250]
outputstring := UPPERCASE(inputstring);
VG
15. Mai 2013 13:06
Jetzt bin ich doch etwas verwirrt.
Ich habe exakt das selbe Prozedere auf einem anderen Computer (Terminalserver) durchgeführt.
In einer anderen NAV Datenbank (ebenfalls 2009 R2), die Basis ist aber die selbe.
Komischerweise bekomme ich den Fehler hier nicht...
VS Version und .NET Version ist exakt die gleiche.
Any ideas? :(
15. Mai 2013 14:02
Schau mal bitte ins Eventlog vom Server wo es nicht lief.
15. Mai 2013 14:10
Type: Microsoft.Dynamics.Nav.Types.Exceptions.NavNCLCallbackNotAllowedException
SuppressMessage: False
FatalityScope: None
Message: Rückruffunktionen sind nicht zulässig.
StackTrace:
bei Microsoft.Dynamics.Nav.Runtime.NavConnection.get_ClientCallback()
bei Microsoft.Dynamics.Nav.Runtime.NavDotNet.CreateDotNet(Object[] arguments)
Source: Microsoft.Dynamics.Nav.Ncl
15. Mai 2013 15:20
Hallo,
hast du auch mal deinen Webservice Dienst neugestartet? Vorher den NAV Server stoppen.
Ansonsten aktualisier auch mal den Webservice Link (Webreference) im Visual Studio.
Gruß
Aydin
15. Mai 2013 15:23
Hallo aydina, habe ich beides schon getan, ohne Erfolg...
15. Mai 2013 15:30
Aydin reicht:-)
Kannst du mal bitte die Funktion löschen und neu anlegen?
Und die Funktion ist wirklich nur diese eine Zeile?
Alternative wäre du arbeitest direkt mit Exit also ohne dem Rückgabeparameter, ob das ein Unterschied macht.
15. Mai 2013 15:35
Oh, habe ich vom Username abgeleitet, entschuldige :)
Habe die Funktion mal gelöscht und neu angelegt.
Auch mit einem anderen Funktionsnamen habe ich es bereits probiert.
Ein direktes EXIT(UPPERCASE(inputstring)) und ein EXIT(outputstring) habe ich auch schon versucht; keine Änderung :(
15. Mai 2013 15:53
Hallo dannyt,
nur eine Idee - ungetestet.
Was passiert wenn du den Webservice ohne Companyname veröffentlichst.
Könnte es sonst vielleicht sein das hier sonst noch Code in Codeunit 1 ausgeührt wird?
mfg,
winfy
15. Mai 2013 15:58
Hallo winfy,
meinst du, die URL im C# Objekt anzupassen?
- Code:
//ws.Url = "http://localhost:7047/DynamicsNAV/WS/CRONUS%20AG%20DTR/Codeunit/Letters";
ws.Url = "http://localhost:7047/DynamicsNAV/WS/Codeunit/Letters";
Das hat leider nichts gebracht, selber Fehler.
Rufe ich die URL im IE auf, ist aber alles so als wenn ich es mit Companyname aufrufe.
Oder meinst du eine andere Veröffentlichung?
15. Mai 2013 16:07
Wenn ich mich nur erinnern könnte >.< Das hatte ich auch mal..
Die Funktion ist der genannte Einzeiler`?
15. Mai 2013 16:27
Fahren wir mal etwas schwere geschütze auf:-)
Aus den Objekte MetaData (2000000071) die Codeunit mal löschen und neukompilieren.
Dienst neu starten schadet nie:-)
Ansonsten mal eine andere Funktion erstellen, die dir das Datum von Heute einfach als String übergibt.
Zumindest könntest du so schritt für schritt das Problem eingrenzen.
15. Mai 2013 16:32
TAAADDAAAAAAAAAAAAAAAAAAAAAAAAAA
Ich habs gefunden :)
Das war der entscheidene Hinweis:
winfy hat geschrieben:Könnte es sonst vielleicht sein das hier sonst noch Code in Codeunit 1 ausgeührt wird?
Ich habe in meiner Test- und Spieldatenbank in der CU1 CompanyOpen() eine MESSAGE Box eingebaut.
Ergo wird die CU1 auch bei einem Web Service Aufruf durchlaufen.
Das Thema ist damit gelöst, vielen Dank an alle :)
15. Mai 2013 16:51
aaahh verdammt. Bei uns war es damals eine Infobox (Öffnen einer Form)! :)
15. Mai 2013 16:53
Ja, lass den Companyname besser in der Ws.URL drin.
Ich hab das nur vorgeschlagen weil ich dachte das dann CompanyOpen in Codeunit 1 nicht aufgerufen wird.
Die Codeunit 1 könntest du auch mit dem beliebten Codeschnipsel anpassen.
- Code:
IF ISSERVICETIER THEN BEGIN
IF GUIALLOWED THEN // RTC
ELSE // WebService
END ELSE BEGIN
IF GUIALLOWED THEN // CC
ELSE // NAS
END;
P.S.: Wobei ich dachte das es deinen Fehler bei MESSAGE eigentlich nicht geben sollte...
mfg,
winfy
Zuletzt geändert von winfy am 15. Mai 2013 16:58, insgesamt 1-mal geändert.
15. Mai 2013 16:56
Danke für den Schnipsel, habe es so angepasst :)
VG
dannyt
Powered by phpBB © phpBB Group.
phpBB Mobile / SEO by Artodia.