Benutzer mit den meisten Antworten
externe Suchmaske

Frage
-
Hallo,
ich mache grad meine ersten Schritte mit CRM 4.0 und dem SDK.
In diesem Zusammenhang möchte ich eine selbstgeschriebene ASP-Seite als Suchfenster verwenden, in dem mit einem Klick auf das Suchergebnis die entsprechende Entität in CRM aufgerufen wird.
In meiner Entwicklungsumgebung (W7 und VS 2010) klappt es wunderbar. Ich generiere mit der gefundenen Id einen Url, den ich dann aufrufe.
Auf meinem CRM-Testsystem, auf dem ich auch die Suchseite liegen hab (Windows Server 2003 und einem älteren IIS (wie man die Version des IIS ermittelt, hab ich noch nicht herausbekommen)), funktioniert das leider nicht mehr. Einen Fehler gibt es auch nicht (auch laut Fiddler). Wenn man die generierte URL manuell in den Browser eingibt, dann wird die Entität im CRM korrekt angezeigt.
Woran kann das liegen, das sich die Entität nicht aus meinem Suchprogramm aufrufen lässt?
Bodo
Antworten
-
Hallo Bodo,
Ich denke ich verstehe und weiß wo dein Problem ist: Mit System.Diagnostics.Process.Start(URL) machst du auf dem Rechner, auf dem dieser Befehl ausgeführt wird einen neuen Prozess auf - darum funktioniert es auf deinem Entwicklungsrechner. Wenn du die Seite dann auslieferst läuft die Logik am Server (-> CRM-Server), d.h. mit diesem Befehl machst du direkt am Server den Prozess auf und nicht auf deinem Client! Das Prinzip von ASP.NET ist ja, dass die Logik am Server läuft und dann die gerenderte Webseite an den Client geliefert wird. Wenn du dann am Client Aktionen setzen willst (z.B.: neues Fenster öffnen) geht das NUR über Javascript, weil alle anderen Befehle am Server ausgeführt werden! Überleg mal, was alles passieren könnte, wenn eine einfache ASP.NET Webseite auf deinem Client-Rechner den Befehl Process.Start ausführen könnte...!
Hoffe ich konnte dir mit dieser Beschreibung helfen und wie gesagt, versuch das Fenster mit Javascript zu öffnen. Falls du noch Hilfe oder Code brauchst kannst du dich gerne wieder melden.
Liebe Grüße,
Andreas
Andreas Buchinger
Microsoft Dynamics Certified Technology Specialist
MCPD: SharePoint Developer 2010- Als Antwort markiert Bodo Jäger Mittwoch, 3. August 2011 12:23
Alle Antworten
-
Hallo,
das CRM wird nur auf dem 2003'er gehostet.
Auf dem W7 läuft nur der eingebaute Webserver von Visual Studio, mit dem ja auch alles funktioniert.
Die Url lautet zum Beispiel:
http://CRMServername/Organisationsname/sfa/accts/edit.aspx?id={EintitätsId}#
Bodo
-
Hallo Bodo,
Und die Suchseite selbst funktioniert einwandfrei? Sprechen wir von einer Webseite unter der CRM-Applikation,von einer Webapplikation unter der CRM-Applikation oder von einer völlig eigenständigen Webapplikation? Wenn du die Suchmaske von deinem VS aus debuggst wird automatisch eine eigentständige Webapplikation gestartet - mit eigener web.config. Vielleicht liegt in der Konfiguration der Webapplikation ein Fehler?
Liebe Grüße,
Andreas
Andreas Buchinger
Microsoft Dynamics Certified Technology Specialist
MCPD: SharePoint Developer 2010 -
Hallo Andreas,
wir sprechen hier von einer eigenen Webapplication, die aufgrund eingegebener Suchbegriffe im CRM nach den entsprechenden Datensätzen sucht, und sie dann auch auflistet. Der Teil funktioniert wunderbar. Wenn ich jetzt aber eine der gefundenen Entitäten anzeigen möchte, funktioniert das nur auf meinem Entwicklungsrechner.
Wenn ich die Applikation dann auf den Test-CRM-Server kopiere, ist natürlich auch die gleiche web.config dabei. Ob das ein Problem sein kann....?
Das ist ja die Frage :-)
Wie gesagt, ich bin noch neu in der Web-Programmierung....
Bodo
-
Hallo Bodo,
Zusammenfassend, dass ich es auch richtig verstehe: Die Suchseite läuft als "Site" auf dem CRM-Server. Du rufst die Suchseite von deinem Rechner über den IE auf und gibst einen Begriff ein. Die Suchseite verbindet sich über Webservices zum CRM und gibt die gefundenen Datensätze in einer Liste zurück. Wenn du dann einen der Datensätze öffnen willst (wahrscheinlich mit window.open per Javascript) öffnet ein leeres IE-Fenster - ohne Fehlermeldung oder ähnliches. Wenn du die Seite auf deinem Entwicklungsrechner im VS startest funktioniert das Öffnen eines Datensatzes.
Als erste Anhaltspunkte würde ich in den Einstellungen des IE kontrollieren, ob hier Unterschiede ersichtlich sind. Vom VS aus wird der window.open-Befehl von localhost gesendet - diesem vertraut der Rechner sicher. Andererseits wenn die Suchseite vom Server aufgerufen wird könnte das Popup auch vom IE geblockt werden.
Liebe Grüße,
Andreas
Andreas Buchinger
Microsoft Dynamics Certified Technology Specialist
MCPD: SharePoint Developer 2010 -
Hallo Andreas,
das von dir beschriebene Scenario stimmt fast...
Die Datensätze will ich nicht per Javascript öffnen, sondern indem ich eine neue Task mit einer URL (s.o.) starte.
System.Diagnostics.Process.Start(URL)
Außerdem ist immer der gleiche IE im Spiel. VS öffnet zum testen meine Site mit dem lokal installierten IE. Wenn ich jetzt aber mit dem gleichen IE die Site vom Server starte, funktioniert der oben beschriebene Befehl nicht mehr.
Deshalb denke ich, das es mit dem IIS zusammenhängen muss. Beim testen aus VS wird ja ein interner Webserver von VS verwendet, und im anderen Fall der IIS auf dem das CRM installiert ist (der ja auch die Suchanwendung hosten soll).
Und der oben beschriebene Befehl wird aber ja vom Server ausgeführt.
Es wäre aber mal eine Idee, den gefundenen Datensatz per Javascript zu öffnen.
Bodo
-
Hallo Bodo,
Ich denke ich verstehe und weiß wo dein Problem ist: Mit System.Diagnostics.Process.Start(URL) machst du auf dem Rechner, auf dem dieser Befehl ausgeführt wird einen neuen Prozess auf - darum funktioniert es auf deinem Entwicklungsrechner. Wenn du die Seite dann auslieferst läuft die Logik am Server (-> CRM-Server), d.h. mit diesem Befehl machst du direkt am Server den Prozess auf und nicht auf deinem Client! Das Prinzip von ASP.NET ist ja, dass die Logik am Server läuft und dann die gerenderte Webseite an den Client geliefert wird. Wenn du dann am Client Aktionen setzen willst (z.B.: neues Fenster öffnen) geht das NUR über Javascript, weil alle anderen Befehle am Server ausgeführt werden! Überleg mal, was alles passieren könnte, wenn eine einfache ASP.NET Webseite auf deinem Client-Rechner den Befehl Process.Start ausführen könnte...!
Hoffe ich konnte dir mit dieser Beschreibung helfen und wie gesagt, versuch das Fenster mit Javascript zu öffnen. Falls du noch Hilfe oder Code brauchst kannst du dich gerne wieder melden.
Liebe Grüße,
Andreas
Andreas Buchinger
Microsoft Dynamics Certified Technology Specialist
MCPD: SharePoint Developer 2010- Als Antwort markiert Bodo Jäger Mittwoch, 3. August 2011 12:23