ASP.NET Web API XML und JSON

Es gibt etwas, was ich im Web nicht liebe. Das ist HTML, CSS Layouts, JavaScript und die Browser. OMG

Wenn man mit Chrome und IE einen ASP.NET Web API Service aufruft, erhält man unterschiedliche Ergebnisse.

image

Einmal JSON und einmal XML.

image

Der Grund ist, das beide Browser sich wie immer nicht einig sind und unterschiedliche Header losschicken. Im Chrome kommt vor

Accept: text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8.

Deswegen denkt der Service, das Chrome wohl lieber XML hat.

Allerdings kann man in die Formater eingreifen. Eigentlich eher um selbst neue zu schreiben, aber auch um einen rauszuwerfen. Hier wird in der Global.asax eine Methode RegisterAPIs aufgerufen und dort der XMLFormater entfernt. Dann erhält auch Chrome JSON als default Format.

 Sub Application_Start()
        AreaRegistration.RegisterAllAreas()
        RegisterGlobalFilters(GlobalFilters.Filters)
        RegisterRoutes(RouteTable.Routes)

        RegisterApis(GlobalConfiguration.Configuration)

        BundleTable.Bundles.RegisterTemplateBundles()
    End Sub

    Private Sub RegisterApis(httpConfiguration As HttpConfiguration)
        Dim f = GlobalConfiguration.Configuration.Formatters
        f.Remove(f.XmlFormatter)
    End Sub

Kommentare (1) -

  • Die Frage ist: wann rufe ich einen Service im Browser auf?
    Wenn ich einen XHR oder HTTPClient-Call mache, setze ich sowieso den Accept-Header - und in Fiddler ebenso...

Kommentar schreiben