Zum Hauptinhalt springen

Bekannte Probleme

Eine Tabelle/View oder Synonym erscheint nicht in MapGuide Maestro/MapGuide Author

Ist ein MapGuide Problem. MapGuide Service neu starten und Maestro neu starten.

Eine Tabelle/View/Synonym/Spalte erscheint nicht oder wird mit falschen Spalten im AppBuilder angezeigt

Lösung: Im AppBuilder die Datenbankverbindung aktualisieren und Views Registrieren.

Wenn man an der Datenbank Struktur änderungen mit anderen Tools als dem AppBuilder macht,
z.B. SQL Plus, DBeaver, SQL Sheet etc, dann weiß MapEdit davon nichts. D.h. nach allen Änderungen mit Fremdtools muss zwingend die Datenbankverbindung aktualisieren werden.

Wenn man Views händisch anlegt (was man nie machen sollte) muss man diese Registrieren.
Siehe:
https://help.mapedit.de/admin-guide/mapedit-appbuilder/database-connections/structure/views#view-registrieren

Bei Map 3D/Topobase Datenstrukturen muss der View ggf in TB_DICTIONARY eingetragen werden.

In einem Generischen Formular das auf einem View basiert erscheinen falsche Datensätze

Dies passiert wenn das Feld FID oder ID des Views nicht eindeutig ist. Bilden Sie eine eindeutige FID aus allen beteiligten Tabellen.

Details siehe Kapitel "Views"
https://help.mapedit.de/admin-guide/mapedit-appbuilder/database-connections/structure/views

ORA-01031: insufficient privileges when creating a oracle view

Die Meldung kommt beim Anlegen eines Views und bedeutet das Sie Oracle seitige keine Rechte haben um einen View anzulegen.

Melden Sie sich in der Oracle Console mit einem sysdba Benutzter an und geben sie dem User das Recht Views anzulegen.

Beispiel:

GRANT CREATE ANY VIEW TO your_user;

Oder geben Sie dem User alle Rechte via:

GRANT ALL PRIVILEGES TO your_user;

Die zugrunde liegende Verbindung wurde geschlossen / The underlying connection was closed

Beim starten von MapEdit.exe oder MapEdit.AppBuilder.exe kommt folgende Meldung:

MapEdit Starter:
The underlying connection was closed: An unexpected error accured on a send.
Die zugrunde liegende Verbindung wurde geschlossen

Lösung: Prüfen Sie ob sie die neusten Versionen der MapEdit.exe/MapEdit.AppBuilder.exe Dateien verwenden und aktualisieren Sie diese auf den neusten Stand der letzten Software Version.

Wenn Sie ältere Versionen dieser Dateien benutzen funktionieren diese ggf. wegen Microsoft Sicherheits und Zertifikats Änderungen nicht mehr.

Error:[Hosting_ServiceActivationFailed]

Error:[Hosting_ServiceActivationFailed]
Argumente: http://localhost/mum.geo.services/DataAccessService.svc

Lösung: Die URL die bei Argumente steht ausführen, dann bekommt man den wahren Fehler. In vorliegenden Fall war zum Beispiel der Hauptspeicher des Rechners voll.

Der angeforderte Dienst "http://meineurl/mum.geo.services/Application.svc" konnte nicht aktiviert werden

Der angeforderte Dienst "http://meineurl/mum.geo.services/Application.svc" konnte nicht aktiviert werden.

Lösung: Auf den Rechner gehen auf dem MapEdit Server installiert ist. Dort das hier eingeben http://localhost/mum.geo.services/Application.svc?wsdl Dann bekommt man die wahre Meldung.

MapEdit started nicht, Methode not Allowed

Der Remoteserver hat eine unerwartete Antwort zurückgegeben: (405) Method Not Allowed.

In der Installations Doku schauen, da steht das man bei der IIS installation unter WCF das HTTP aktivieren muss.

Turn Windows features on or off .Net Framework 4.8 -> WCF Services - >HTTP Activation

Projektion in Generic Dialogen funktioniert nicht

Die kann vorkommen wenn man "Bennante Projektionen" benutzt und über SQL TextBoxen oder SQL Labels gefiltert hat.

Wenn man benannte Projektionen über Topobase neu erzeugt, dann fehlt per default bei Vorlage SQL der von Topobase angeboten wird dort beim Tabellenname der Aliasname "a".

Man muss diesen Alias "a" händisch eintragen:

Falsch:

FID_BAUM in (select FID  from BAUM_STAMMDATEN where  {Filter})

Richtig:

FID_BAUM in (select FID  from BAUM_STAMMDATEN a where  {Filter})

Die Einträge sind in der Tabelle TB_GN_DIALOG_PROJECTION zu finden wenn man diese nicht über die UI machen will.

In Professional geht der falsche Generic Dialog auf

Dies kommt vor wenn es sich um einen View handelt. Die Tabelle die geöffnet wird, wird im View durch den Eintrag "Attribute Table" bestimmt. Prüfen Sie bei dem verwendeten View im AppBuilder ob bei "Attribute Table" der richtige Tabellenname eingetragen ist.

Es kann auch sein das für den Dialog eine Dialog Umleitung eingerichtet wurde. Prüfen Sie dazu die Einstellung unter "Tabelle/View" -> "Info Umleitung"

In Map Guide Maestro kommen keine Linien Stile in der Auswahl Liste

Die Liste ist leer. Dieser Effekt tritt in Maestro 6.0m11 auf. In Maestro 6.0m10 geht es.

Loesung: Maestro 6.0m10 verwenden oder in das XML gehen und den Linien Stil Namen haendisch eintragen.

Maestro 6.0m10 kann auch parallel installiert werden, die Layer definitionen dürfen dann aber nicht auf die neuste Version upgedated werden sondern müssen auf 2.4. bleiben.

Meldung "Methode nicht gefunden/Method not found" bei ausführen von Skripten

Öffnen Sie das Script im AppBuilder und drücken Sie den "Kompilieren" Knopf. Danach sollte das Problem behoben sein.

Meldung "Methode nicht gefunden/Method not found" bei starten von MapEdit

Die kann vorkommen wenn der Kunde eigene Plugins Programmiert hat und diese nicht mit den neusten DLLs kompiliert hat.

Der Plugin Entwickler muss zur Behebung sein Plugin mit den neusten MapEdit DLLs aus dem Verzeichnis CoreDLLs kompilieren.

Siehe auch https://help.mapedit.de/api/intro/

Error: (413) Request Entity Too Large

Dies kann vorkommen wenn die Datei web.config im Verzeichnis Mum.Geo.Services des MapEdit Web Servers sehr alt ist und veraltete Einstellungen hat.

Die Web Config muss so aussehen:

<?xml version="1.0"?>

<!-- For more information on how to configure your ASP.NET application, please visit
http://go.microsoft.com/fwlink/?LinkId=169433
-->

<configuration>

<appSettings>
<add key="DataPath" value="C:\inetpub\wwwroot\MumGeoData\" />

alle anderen einstellungen mit add key

</appSettings>

<system.web>
<compilation debug="true" batch="false" targetFramework="4.8" />
<!--
<globalization culture="de" uiCulture="de-DE" />
<globalization culture="en-US" uiCulture="en-US" />
-->
</system.web>
<system.serviceModel>
<!-- If you wanna use Https then change Http to Https -->
<client configSource="Config\Https.Client.config" />
<behaviors configSource="Config\Https.Behaviors.config" />
<bindings configSource="Config\Https.Bindings.config" />
<services configSource="Config\Https.Services.config" />
<!-- -->
<serviceHostingEnvironment aspNetCompatibilityEnabled="true" multipleSiteBindingsEnabled="true" />
</system.serviceModel>

</configuration>

Prüfen Sie das bei targetFramework 4.8 steht und nicht 4!

Die Einträge client configSource, behaviors configSource, bindings configSource und services configSource müssen vorhanden sein.

Es darf keine Einträge/Blöcke mit system.runtime.serialization geben und servicemodel muss exakt so aussehen wie oben.

Beispiel für eine Fehlerhafte web.config Inhalt.

targetFramework steht hier nicht auf 4.8 system.serviceModel sieht nicht aus wie oben. Es dürfen da keine customBinding oder serviceBehaviors stehen.


<system.web>
<compilation debug="true" batch="false" targetFramework="4.0" />
</system.web>

<system.serviceModel>
<behaviors>
<serviceBehaviors>
<behavior name="">
<dataContractSerializer maxItemsInObjectGraph="2147483647" />
<serviceMetadata httpGetEnabled="true" />
<serviceDebug includeExceptionDetailInFaults="false" />
</behavior>
<behavior name="metadataAndDebug">
<dataContractSerializer maxItemsInObjectGraph="2147483647" />
<serviceMetadata httpGetEnabled="true" httpGetUrl="" />
<serviceDebug httpHelpPageEnabled="true" includeExceptionDetailInFaults="true" />
</behavior>
</serviceBehaviors>
</behaviors>
<bindings>
<customBinding>
<binding name="Mum.Geo.Services.IO.customBinding0">
<binaryMessageEncoding />
<httpTransport />
</binding>
<binding name="Mum.Geo.Services.Application.customBinding0">
<binaryMessageEncoding />
<httpTransport />
</binding>
<binding name="Mum.Geo.Services.DataAccessService.customBinding0">
<binaryMessageEncoding />
<httpTransport />
</binding>
<binding name="Mum.Geo.Services.ResourceLimiter.customBinding0">
<binaryMessageEncoding />
<httpTransport />
</binding>
</customBinding>
</bindings>
<services>
<service behaviorConfiguration="metadataAndDebug" name="Mum.Geo.Services.IO">
<endpoint address="" binding="customBinding" bindingConfiguration="Mum.Geo.Services.IO.customBinding0" contract="Mum.Geo.Services.IO" />
<endpoint address="mex" binding="mexHttpBinding" contract="IMetadataExchange" />
</service>
<service behaviorConfiguration="metadataAndDebug" name="Mum.Geo.Services.Application">
<endpoint address="" binding="customBinding" bindingConfiguration="Mum.Geo.Services.Application.customBinding0" contract="Mum.Geo.Services.Application" />
<endpoint address="mex" binding="mexHttpBinding" contract="IMetadataExchange" />
</service>
<service behaviorConfiguration="metadataAndDebug" name="Mum.Geo.Services.DataAccessService">
<endpoint address="" binding="customBinding" bindingConfiguration="Mum.Geo.Services.DataAccessService.customBinding0" contract="Mum.Geo.Services.DataAccessService" />
<endpoint address="mex" binding="mexHttpBinding" contract="IMetadataExchange" />
</service>
<service behaviorConfiguration="metadataAndDebug" name="Mum.Geo.Services.ResourceLimiter">
<endpoint address="" binding="customBinding" bindingConfiguration="Mum.Geo.Services.ResourceLimiter.customBinding0" contract="Mum.Geo.Services.ResourceLimiter" />
<endpoint address="mex" binding="mexHttpBinding" contract="IMetadataExchange" />
</service>
</services>
<serviceHostingEnvironment aspNetCompatibilityEnabled="true" multipleSiteBindingsEnabled="true" />
</system.serviceModel>

<system.runtime.serialization>
<dataContractSerializer>
<declaredTypes>
<add type="Contact,Host,Version=1.0.0.0,Culture=neutral,PublicKeyToken=null">
<knownType type="Customer,MyClassLibrary,Version=1.0.0.0,Culture=neutral,PublicKeyToken=null" />
</add>
</declaredTypes>
</dataContractSerializer>
</system.runtime.serialization>

</configuration>

MapEdit geht nicht mit Oracle 21

In MapEdit kommt die Meldung "Server did not respond within the specified timeout interval".

In Windows müssen die Pfad Variablen ORACLE_HOME und TNS_ADMIN gesetzt sein. Diese werden von der Oracle installation nicht erzeugt.

Beispiel:

Hinweis
set ORACLE_HOME=E:\app\Oracle\product\21.3.0\dbhome_1
set TNS_ADMIN=E:\app\Oracle\homes\OraDB21Home1\network\admin

Zusätzlich sind Leseberechtigung für den IIS_IUSRS auf das Oracle Verzeichnis notwendig.

Beim Aufruf von MapServer Karten kommt: Der Remoteserver hat einen Fehler zurückgegeben: (404) Nicht gefunden.

Das kann vorkommen wenn sehr viele Layer benutzt werden, dann wird die URL wegen der vielen Layername zu lang bzw. länger als die Standardmässig zugelassenen 2048 Zeichen des IIS.

Das ist keine Einschraenkung von MapEdit sondern vom IIS bzw WebServer der für MapServer verwendet wird. D.h. man muss den Wert im WebServer dort wo die MapServer Software installiert ist hochsetzen das dieser mehr Zeichen durchlässt.

Wenn den Internet Information Service (IIS) für MapServer verwendet dann:

IIS -> "Default Web Site" -> Request Filtering -> Register "Query String" "Edit Feature Settings..." "Maximum query string (Bytes)" von 2048 auf höheren Wert ändern der für die Länge der URL ausreicht. Beispielsweise 10000.

ORA-29861: Domain-Index ist als LOADING/FAILED/UNUSABLE markiert

Das Problem kann unter anderem auftreten wenn ein GEOM Feld nicht in der Tabelle USER_SDO_GEOM_METADATA registriert ist.

Prüfen das mindestens MapEdit 23.1.241 installiert ist. Dann Im AppBuilder bei der Datenbank die "Datenbank wartung" öffnen. "Spatial Metadata erneuern" anhaken, unten rechts "prüfen und reparieren" einstellen und "Ausführen" drücken.

msOGRFileOpen: Native SQL not available, no Spatialite support and/or not a Spatialite enabled db

Kann bei MapServer in Verbindung mit SQLite auftreten.

Diese ist eine Falsch-Meldung und bedeutet in vielen Fallen das das SQL nicht mit SQLite funktioniert. z.B. wenn SQL Funktionen oder Syntax benutzt wird die nicht SQLite conform sind.

Führen Sie den SQL der Probleme macht im SQL Query Tool aus und setzen Sie hinter den SQL den Ausdruck

-–NOSIM

in die gleiche Zeile.

Beispiel:

select fid, replace(concat( PRE, LABEL_TEXT, SUF),'\P', CHAR(10)) as ms_label_text from park_lbl --NOSIM

Wirft den Fehler

no such function: concat.

Der SQL muss in diesem Fall umgeändert werden in

select fid, replace(coalesce(PRE,'')||coalesce(LABEL_TEXT,'')||coalesce(SUF,''),'\P', CHAR(10)) as ms_label_text from park_lbl

D.h. concat wird durch || ersetzt und die einzelnen Parameter müssen mit coalesce in einen nicht NULL wert umgewandelt
werden.

Drucken/Plotten geht nicht

Es kommt die Meldung

Bei der Erstellung der PDF ist ein Fehler aufgetreten.
Keine Daten erhalten.
Prüfen Sie bitte die Logdatei auf dem Server bzw. wenden Sie sich an den Systemadministrator

Wo die Server Logdatei steht bzw wie man diese für das Plotmodul einrichtet finden Sie hier

https://help.mapedit.de/admin-guide/mapedit-appbuilder/map-definitions/print-map/#protokollierung-aktivieren

In vielen Fällen ist das Problem das der MapEdit Server Rechner Abfragen z.B. auf externe WMS Karten URLS nicht ausführen kann weil der MapEdit Server keinen Zugriff auf das Internet hat oder auf die WMS URL hat. Testen Sie die ggf WMS URL im Browser des MapEdit Server Rechners.

MapEdit kann nicht gestartet werden - Windows Defender blockiert

Der Name der Intune Richtlinie ist: Block executable files from running unless they meet a prevalence

Die Ursache der Warnmeldung wird diese Einstellung sein: Block executable files from running unless they meet a prevalence, age, or trusted list criterion ist auf "Warn" gesetzt.

Mit den Ausnahmen unter: ASR Only Per Rule Exclusions

Weitere konfigurierte Ausnahme: Attack Surface Reduction Only Exclusions

Link zu dem Artikel bei Microsoft: https://learn.microsoft.com/en-us/defender-endpoint/attack-surface-reduction-rules-reference

Damit ist der Betrieb von MapEdit gewährleistet. Jedoch Setups etc. laufen damit nicht (MuMAlkis etc). Hier wird immer eine temporäre Datei generiert und diese geblockt. Da lässt sich kein Name hinterlegen für eine Ausnahme.

Warum ist das so?

Siehe https://learn.microsoft.com/en-us/defender-endpoint/attack-surface-reduction

Attack surface reduction rules target certain software behaviors, such as:

Launching executable files and scripts that attempt to download or run files
Running obfuscated or otherwise suspicious scripts
Performing behaviors that apps don't usually initiate during normal day-to-day work

Dies trifft auf MapEdit zu weil:

  • Die MapEdit.exe etc führen jeweils eine andere exe aus (die im cache MapEdit.Dektop.exe)
  • MapEdit verwendet Plugins (also andere DLLs) läd diese herunter und führt diese aus.
  • MapEdit verwendet für Formeln und anderes VB/C# Script

Fehler: 23505: doppelter Schlüsselwert verletzt Unique-Constraint

Wenn Sie diese Fehlermeldung bekommen bedeutet das, das auf der Spalte einer Tabelle ein eindeutiger Index existiert der verhindert das doppelte Werte in die Spalte eingetragen werden.

Beispiel:

Fehler: 23505: doppelter Schlüsselwert verletzt Unique-Constraint »idx_638536131165400766«

Mit diesem SQL finden Sie heraus auf welche Tabelle und Spalte der Index geht.

SELECT tablename,indexname,indexdef FROM pg_indexes WHERE schemaname=current_schema and indexname='idx_638536131165400766'

Hinter dem Wort "public." finden Sie den Namen der Tabelle. Am Ende finden Sie in Klammern den oder die Spaltennamen auf die der eindeutige Index geht.

Lösung:

Sie müssen nun entscheiden ob der Eindeutige Index Sinn macht oder nicht. Möglicherweise haben Sie diesen Index versehentlich angelegt.

Lesen Sie dazu
https://help.mapedit.de/admin-guide/mapedit-appbuilder/database-connections/structure/columns#eindeutig

Wenn es sich um einen Index auf eine Spalte handelt die Sie nicht selbst angelegt haben sondern von einer Fertigen Fachschale kommt dann kontaktieren Sie ggf die MuM Hotline.

Manche TileServer Karten werden beim TileUpdater oder der Kartenverwaltung nicht angezeigt

Wenn in der TileServer Konfiguration die URL bei RefSysInfoFile nicht korrekt oder nicht vom TileServer erreichbar ist, dann werden diese Karten bei der Auswahl im AppBuilder z.B. bei der Kartenverwaltung oder TileUpdater, nicht angezeigt.

Stellen Sie sicher das der TileServer auf die RefSysINfo URL zugreifen kann. Sie können dies testen in dem Sie auf dem Rechner auf dem der TileServer installiert ist die URL in den Web Browser eingeben. Sie müssen dann den Inhalt der Datei sehen.

Error datasource was not found: Tabellenname

Kann an Stellen auftreten wo MapEdit Core benutzt wird. Wie z.B. der Netzwerkverfolgung.

Problem: MapEdit Core kennt die Datenbank noch nicht und muss synchronisiert werden.

Lösung: Im AppBuilder -> Core Admin -> die Knöpfe "Synchronize Repository" und "Synchronize Data Sources" drücken.

2P16: kann Namen der Sichtspalte XX nicht in YY ändern

Da kann bei Postgres auftreten wenn man "CREATE OR REPLACE VIEW" ausführt.

siehe Postgres Handbuch:
https://www.postgresql.org/docs/9.3/sql-createview.html

Lösung:

Statt "CREATE OR REPLACE VIEW" zuerst "DROP VIEW" und dann "CREATE VIEW" ausführen.

Hinweis

Bei Oracle ist dies nicht so!

HTTP Error 404.3 - Not Found

Bei einer neuen Installation von MapEdit Server kkann diese Meldung kommen wenn ASP.NET 4.5 nicht installiert ist.

Installation ASP.NET 4.5:

  • Open the Control Panel (or run appwiz.cpl)
  • Click Programs
  • Click Turn Windows features on or off
  • Click Internet Information Services to install the default features
  • Expand the Application Development Features node
  • Click ASP.NET 4.5 to add the features that support ASP.NET
  • Click OK to close the dialog box