Falsche URLs, wenn das Root einer Anwendung in einem Ordner liegt, der gleich wie ein Controller/Route/View heißt

Heute hatte ich folgenden Fall einer ASP.NET-Core-2.2-Anwendung, die in-process im IIS gehostet ist:

  • Anwendung liegt auf https://www.example.org/MyApp
  • Ein Controller bzw. eine Route heißt so wie der Unterordner („MyApp“).

Diese Anwendung hat sich dann beim Navigieren innerhalb der Anwendung falsch verhalten.

Beispielsweise heißt eine URL dann fälschlicherweise so:

https://www.example.org/MyApp/MyApp/SomeAction/5

anstatt:

https://www.example.org/MyApp/SomeAction/5

Es wird also ein „MyApp“ zu viel eingefügt.

Lösung

Bei mir hat nur geholfen, die Anwendung entweder in einen anderen Unterordner zu veröffentlichen (z. B. „MyProg“), oder die Route/Controller/View umzubenennen (z. B. „Shop“).

Kurz: eine Route/Controller/View sollte nicht so heißen wie der virtuelle Ordner, in dem die Anwendung publiziert wird.