190 messaggi dal 29 settembre 2010
Buongiorno a tutti,
sto cercando di utilizzare il metodo:
PostAsync
per inviare dati ad un server e aggiornare, ad esempio un file .xml.
Viene evidenziato il seguente errore sull'ultima response:
"
Response status code does not indicate success: 405 (Method Not Allowed).
"
L'invio dei dati, quindi, non va a buon fine (il file xml non viene aggiornato).
Posto il codice:
private async void POSTJSONRest_Click(object sender, RoutedEventArgs e)
        {
            Customer c = new Customer { Id = 9, Name = "Mario Rossi", Address = "Indirizzo", City = "Citta'", Country = "Italia", ZipCode = "10000" };
            JsonObject obj = new JsonObject();
            obj.Add("Id", JsonValue.CreateNumberValue(c.Id));
            obj.Add("Name", JsonValue.CreateStringValue(c.Name));
            obj.Add("Address", JsonValue.CreateStringValue(c.Address));
            obj.Add("City", JsonValue.CreateStringValue(c.City));
            obj.Add("Country", JsonValue.CreateStringValue(c.Country));
            obj.Add("ZipCode", JsonValue.CreateStringValue(c.ZipCode));

            StringContent content = new StringContent(obj.Stringify(), Encoding.UTF8, "application/json");
            HttpClient client = new HttpClient();
            var response = await client.PostAsync("http://localhost/api/values.xml", content);
            response.EnsureSuccessStatusCode();
        }

Questa la classe Customer:
class Customer
    {
        [PrimaryKey, AutoIncrement]
        public int Id { get; set; }
        [MaxLength(50)]
        public string Name { get; set; }
        [MaxLength(50)]
        public string Address { get; set; }
        [MaxLength(50)]
        public string City { get; set; }
        [MaxLength(15)]
        public string ZipCode { get; set; }
        [MaxLength(50)]
        public string Country { get; set; }
    }

Attendo suggerimenti.
Grazie
11.886 messaggi dal 09 febbraio 2002
Contributi
ciao,
l'errore "Method Not Allowed" vuol dire che la richieste di tipo POST è stata bloccata da IIS, quasi sicuramente perché rivolta ad un file statico. Guarda infatti l'url della tua richiesta:
client.PostAsync("http://localhost/api/values.xml", content);

Il ".xml" che hai aggiunto alla fine è intenzionale oppure si tratta di un errore?

Quando si richiede una risorsa con estensione .xml (come altri tipi di estensione tipo .jpg, .css, .js e altro), IIS normalmente passa la richiesta al gestore StaticFile che nel tuo caso deve essere stato configurato per non accettare richieste di tipo POST.

Il problema dunque è nell'applicazione http://localhost che vai ad invocare. Non è soltanto che la richiesta viene bloccata, ma che viene anche passata al gestore sbagliato anziché al runtime di ASP.NET.

Che tipo di applicazione hai su http://localhost? Si tratta di MVC con WebApi?


ciao
Modificato da BrightSoul il 23 giugno 2013 09.35 -

Enjoy learning and just keep making

Torna al forum | Feed RSS

ASPItalia.com non è responsabile per il contenuto dei messaggi presenti su questo servizio, non avendo nessun controllo sui messaggi postati nei propri forum, che rappresentano l'espressione del pensiero degli autori.