none
.NET Framework 4.7.1 Controller Probleme RRS feed

  • Frage

  • Ich soll einen Controller erstellen der in der url mit .json endet:

    {{baseurl}}/api/orders.json   POST

    [Route("api/orders.json")]
    [AcceptVerbs("POST")]
    public HttpResponseMessage CreateOrder([FromBody] dynamic value)

    {{baseurl}}/api/orders/{{id}}.json  GET

    {{baseurl}}/api/order/{{id}}.json  PUT
    {{baseurl}}/api/order/{{id}}/events.json GET 
    {{baseurl}}/api/order/{{id}}/cancel.json POST

    Das funktioniert alles wie gewünscht, bis eben am Ende der url .json angefügt wird. Keine der im Web auffindbaren Beispiele (und die sind nicht sehr üppig gestreut) funktioniert. Alle Anfragen, sobald sie mit .json enden werden nicht mehr an den Controller weiter geleitet sonder sollen als direkte Zugriffe auf entsprechend benannte Dateien ausgeführt werden.

    Ich denke das hat etwas mit den MimeTypes und Handler Einstellungen des IIS zu tun.

            <staticContent>
                <remove fileExtension=".json" />
            </staticContent>

    Habe ich schon probiert, löst das Problem aber nicht.

    Auch folgendes habe ich probiert:

            protected void Application_BeginRequest()
            {
                var oldUrl = this.Context.Request.Url.ToString();
                Log.Write(LogLevel.Debug, oldUrl);
                if (oldUrl.EndsWith(".json"))
                {
                    var newUrl = oldUrl.Substring(0, oldUrl.Length - 5);
                    Log.Write(LogLevel.Debug, "redirect to " + newUrl);
                    this.Response.Redirect(newUrl);
                }
            }

    Aber auch hier kommt der Code nicht vorbei sobald die url mit .json endet.

    Mir ist sicherlich nur eine Kleinigkeit entgangen um das zum Laufen zu bringen.

    Mit bestem Dank im Voraus

    Markus



    Dienstag, 16. Juli 2019 09:23

Antworten

Alle Antworten

  •     <rewrite>
          <rules>
            <rule name="extensionless" stopProcessing="true">
              <match url="(.*)\.json" />
              <action type="Rewrite" url="{R:1}" redirectType="Permanent" />
            </rule>
          </rules>
        </rewrite>

    Das funktioniert, aber ist eigentlich nicht was ich wollte

    Dienstag, 16. Juli 2019 10:12
  • Hallo Markus,

    das Problem liegt bei IIS nicht bei ASP.NET

    Mit den Suchbegriffen "iis url with dot 404" findet man viele Vorschläge. Ich habe ein paar getestet funktioniert hat keiner. 


    Gruß Thomas
    13 Millionen Schweine landen jährlich im Müll
    Dev Apps von mir: UWP Segoe MDL2 Assets, UI Strings




    Dienstag, 16. Juli 2019 14:19