28 messaggi dal 30 ottobre 2014
Gentili,
non riesco a capire il comportamento di una textbox, diverso da locale a remoto.
Ho una textbox dove inserendo del testo e cliccando poi su un button si richiama un'api remota che converte quel testo in un file mp3.
In locale funziona tutto alla perfezione il problema sorge sul server remoto.
In locale posso fare il copia-incolla del testo da altra fonte, una pagina internet o un file testo mentre in remoto lo stesso identico testo mi ritorna errore e bisogna per forza inserire il testo manualmente senza copia-incolla.
Col medesimo testo copiato negli appunti, incollato in locale funziona in remoto ritorna l'errore: "An exception occurred during a WebClient request" che e' l'oggetto che uso per interrogare la API.
Ho provato a ripetere l'upload dei file vari, ho impostato la culture della pagina su it (il server e' americano) ma non riesco a capire cosa non funziona.

Sicuramente conoscerete gia' questo sito con tantissime Api molto utili e molte anche free https://www.mashape.com

Grazie
Luciano

Ho deciso: preferisco essere il peggiore dei programmatori che il migliore dei NON programmatori.
11.886 messaggi dal 09 febbraio 2002
Contributi
Ciao Luciano,
se uno stesso testo viene digitato o incollato, dal punto di vista della textbox non cambia nulla. Entrambe le metodologie di input sono ugualmente valide e supportate.

A volte, ciò che succede quando si fa copia-incolla, è che vengono inavvertitamente inclusi anche devi spazi iniziali o finali. Questo però è un problema che dipende dall'utente e che perciò si verifica tanto sul PC di sviluppo quanto sul server di produzione.

Per ora proverei semplicemente a fare un Trim() della stringa che leggi dalla textbox e che poi passerai al WebClient.


var url = tuaTextbox.Text.Trim();


Se così non riesci a risolvere, allora credo che il problema sia di natura diversa, nonostante il copia-incolla sembri la causa.

Prova a realizzare una nuova pagina che contiene giusto la Textbox. Al postback, fai un Response.Write del valore che hai letto lato server, così riesci a renderti conto di cosa sia effettivamente arrivato al server.

ciao,
Moreno
Modificato da BrightSoul il 10 marzo 2015 08.14 -

Enjoy learning and just keep making
28 messaggi dal 30 ottobre 2014
Salve Moreno,
sempre gentilissimo.
Il problema, direi quasi sicuramente, non e' causato da spazi iniziali o finali infatti digitando manualmente il testo che poi l'Api converte in audio si possono inserire sia all'inizio che alla fine, cosi' come anche virgole, invii a capo, etc.
Facendo comunque un Response.Write non sembra che venga aggiunto nessun carattere strano ne' in locale ne' in remoto.
Dimenticavo di specificare che in locale uso il server incorporato in Visual Studio non l'IIS.
E' stranissimo perche' sia in IE che in Firefox aperte le due finestre (quella locale e quella remota) facendo un copia/incolla con lo stesso identico testo degli appunti in locale funziona mentre in remoto no.

Ora ho provato ad incollare un singolo paragrafo e funziona anche in remoto, se ripeto il copia/incolla due volte dello stesso paragrafo ritorna l'eccezione, cosa che non avviene in locale.

Il mio e' solo un sito personale di studio di conseguenza non e' che mi cambi la vita, ma non riuscire a capire il motivo mi manda veramente in crisi.

Ciao
Luciano

PS: avanzi un coffee per la disponibilita'.

Ho deciso: preferisco essere il peggiore dei programmatori che il migliore dei NON programmatori.
11.886 messaggi dal 09 febbraio 2002
Contributi
Ciao Luciano,
grazie per i test che hai fatto, sono molto precisi.

In particolare vorrei commentare questo.

Ora ho provato ad incollare un singolo paragrafo e funziona anche in remoto, se ripeto il copia/incolla due volte dello stesso paragrafo ritorna l'eccezione, cosa che non avviene in locale.

Il fatto che almeno una volta il test abbia funzionato anche in remoto mi fa escludere la Textbox dalle possibili cause. Invece, sono più propenso a credere che il server abbia qualche problema di connettività o che gli amministratori abbiano volutamente posto dei filtri sulle richieste http in uscita. Del resto, l'errore che stai ottenendo è:

An exception occurred during a WebClient request

Dovremmo cercare di capire più approfonditamente di quale eccezione si sta trattando.

Crea una nuova pagina aspx in cui metti la richiesta alla API nel Page_Load. Non è necessario creare alcun controllo nel form, tanto si tratta semplicemente di una pagina di test che inverà la stessa richiesta ad ogni aggiornamento. Il paragrafo che prima incollavi nella casella, ora assegnalo ad una variabile vb.net/C# nel codice lato server, e poi passalo al WebClient.
Metti tutto in un try...catch in questo modo, all'interno del Page_Load:
try {
  var paragrafo = "Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua.";

  //qui crea il WebClient e fagli fare la richiesta alla API passandogli il paragrafo

  //Se tutto dovesse andar bene, stampiamo un messaggio di OK
  Response.Write("Richiesta OK");

} catch (WebException ex) {
  //Altrimenti stampiamo le informazioni sull'eccezione
  if (ex.Status == WebExceptionStatus.ProtocolError) {
    Response.Write("<br>Status Code : {0}", ((HttpWebResponse)ex.Response).StatusCode);
    Response.Write("<br>Status Description : {0}", ((HttpWebResponse)ex.Response).StatusDescription);
  }
  Response.Write("<br>Ecco tutto il testo dell'eccezione:<br>{0}<br>", ex);

  if (ex.InnerException != null){
    Response.Write("<br>Ecco tutto il testo dell'eccezione interna:<br>{0}<br>", ex.InnerException);
  }
} catch (Exception ex) {
  Response.Write("<br>Non si trattava di una WebException, ecco il testo:<br>{0}<br>", ex);
}

Ogni volta che aggiorni la pagina, verrà inviata una richiesta alla API.
Vedi se così saltano fuori maggiori dettagli sulla causa del problema e se l'errore si verifica in maniera consistente ad ogni aggiornamento o se invece qualche volta la richiesta riesce.

ciao,
Moreno
Modificato da BrightSoul il 11 marzo 2015 08.26 -

Enjoy learning and just keep making
28 messaggi dal 30 ottobre 2014
Salve Moreno,
altro che caffe' qua bisogna fare un abbonamento caffe'+brioche.

Ho seguito le tue indicazioni e il testo ritornato e':



Ecco tutto il testo dell'eccezione:
System.Net.WebException: An exception occurred during a WebClient request. ---> System.IO.IOException: There is not enough space on the disk. at System.IO.__Error.WinIOError(Int32 errorCode, String maybeFullPath) at System.IO.FileStream.WriteCore(Byte[] buffer, Int32 offset, Int32 count) at System.IO.FileStream.Write(Byte[] array, Int32 offset, Int32 count) at System.Net.WebClient.DownloadBitsState.RetrieveBytes(Int32& bytesRetrieved) at System.Net.WebClient.DownloadBits(WebRequest request, Stream writeStream, CompletionDelegate completionDelegate, AsyncOperation asyncOp) at System.Net.WebClient.DownloadFile(Uri address, String fileName) --- End of inner exception stack trace --- at System.Net.WebClient.DownloadFile(Uri address, String fileName) at System.Net.WebClient.DownloadFile(String address, String fileName) at InternetSite.provevarievarie.Button1_Click(Object sender, EventArgs e) in W:\PROGRAMMAZIONE\ASP.NET - PROGETTI\InternetSite\InternetSite\provevarievarie.aspx.vb:line 23

Ecco tutto il testo dell'eccezione interna:
System.IO.IOException: There is not enough space on the disk. at System.IO.__Error.WinIOError(Int32 errorCode, String maybeFullPath) at System.IO.FileStream.WriteCore(Byte[] buffer, Int32 offset, Int32 count) at System.IO.FileStream.Write(Byte[] array, Int32 offset, Int32 count) at System.Net.WebClient.DownloadBitsState.RetrieveBytes(Int32& bytesRetrieved) at System.Net.WebClient.DownloadBits(WebRequest request, Stream writeStream, CompletionDelegate completionDelegate, AsyncOperation asyncOp) at System.Net.WebClient.DownloadFile(Uri address, String fileName)



E' sicuramente un problema di spazio sul server perche' se faccio partire la pagina con una textbox e un testo di 4-5 parole tutto va a buon fine e viene salvato il file mp3 nella cartella.
Se invece la pagina viene caricata con una textbox con 20-30 parole viene ritornato questo errore dunque come ben dicevi tu non c'entra il copia/incolla.
E' strano perche' ho verificato lo spazio a disposizione e su 100 mega risultano occupati 10 mega, d'altronde e' un contratto gratuito e non si puo' pretendere piu' di tanto.
Provero' a sentire i responsabili della Somee.

Grazie ancora, sono in debito.
Luciano
Modificato da luciusinfabula il 13 marzo 2015 10.51 -

Ho deciso: preferisco essere il peggiore dei programmatori che il migliore dei NON programmatori.
11.886 messaggi dal 09 febbraio 2002
Contributi
Buonasera Luciano,
ottimo, se non altro ora il problema è chiaro.

Hai già avuto risposta dall'assistenza del provider? Anche se ti hanno promesso 100MB, non è escluso che i loro clienti, complessivamente con i loro file, siano arrivati a riempire il disco fisso locale (motivo per cui non riesci a scrivere ulteriori file).

Nel frattempo, prova a mettere la tua applicazione su Microsoft Azure. Ti vengono dati 10 website gratuiti per iniziare a sperimentare.
http://azure.microsoft.com/it-it/develop/net/aspnet/

ciao,
Moreno

Enjoy learning and just keep making
28 messaggi dal 30 ottobre 2014
Salve Moreno,
scusa il ritardo ma nella catena ho dimenticato di leggere la tua risposta, non volevo essere maleducato.
Posto che SOLO grazie a te ho capito che il problema risiede sul server non e' neanche un problema di occupazione del disco perche' io posso continuare a caricare file, pagine aspx, immagini, etc.
Il problema pare solo dato dalla dimensione del file mp3 che viene creato ma essendo essenzialmente un sito di studio, sto imparando anche se con difficolta' data l'eta', mi premeva piu' capire l'origine dello stesso.
E comunque mi sono salvato il listatino con il tuo codice per risalire alla causa degli errori per le prossime volte.

La cosa che mi interessa invece e' quello riguardante Azure.
1) bisogna avere una carta di credito per registrarsi?
2) i siti sono gratuiti per tot giorni dopo di che si inizia a pagare?

Ciao e grazie ancora
Luciano

Ho deciso: preferisco essere il peggiore dei programmatori che il migliore dei NON programmatori.
11.886 messaggi dal 09 febbraio 2002
Contributi
ciao Luciano,
non ti preoccupare, non sei stati scortese :) Il forum ci dà appunto l'opportunità di lasciare messaggi compatibilmente con i nostri impegni e necessità.

luciusinfabula ha scritto:

1) bisogna avere una carta di credito per registrarsi?

Sì, a puro scopo identificativo. Non ti verrà addebitato nulla se non un dollaro che ti viene rimborsato entro pochi giorni, giusto a verifica che la carta sia valida.

A questo punto inizierà un periodo di prova di 30 giorni durante il quale potrai provare tutti i servizi di Azure gratuitamente. La prova potrebbe terminare prima se iniziassi ad usare i servizi in modo intensivo. Comunque, nessun importo ti verrà addebitato senza il tuo esplicito consenso.
Qui ci sono le domande frequenti in merito al periodo di prova.
http://azure.microsoft.com/it-it/pricing/free-trial-faq/

luciusinfabula ha scritto:

2) i siti sono gratuiti per tot giorni dopo di che si inizia a pagare?

No, i website gratuiti lo sono per sempre. Hai 1GB di spazio a disposizione, un database SQL da 20MB e un traffico massimo di 165MB al giorno. E' sufficiente per appoggiarci applicazioni di test o con traffico limitato.
Se anche dovessi raggiungere il limite di banda di 165MB al giorno, non ti verrebbe addebitato nulla - semplicemente il website smetterebbe di accettare richieste fino alla mezzanotte, quando il consumo giornaliero si resetterà.

ciao,
Moreno

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.