567 messaggi dal 18 marzo 2002
devo trasferire dei file da un appllicativo locale scritto in VB6 al server web; ho pensato che il sistema migliore fosse quello di scrivere un web-service che espone un metodo per fare l'upload dei file, ho preso spunto da questo post per scrivere questo metodo:

<WebMethod()> Public Function UpLoadFile(ByVal strUriString As String, ByVal strFileName As String) As Byte()
Dim myWebClient As New System.Net.WebClient()

Dim responseArray As Byte() = myWebClient.UploadFile(strUriString, strFileName)
Return responseArray
End Function

Quando richiamo questo metodo da un apagina aspx ottengo una pagina di errore con questo messaggio:

Exception Details: System.Web.Services.Protocols.SoapException: System.Web.Services.Protocols.SoapException: Server was unable to process request. ---> System.Net.WebException: The remote server returned an error: (405) Method Not Allowed. at System.Net.HttpWebRequest.CheckFinalStatus() at System.Net.HttpWebRequest.GetResponse() at System.Net.WebClient.UploadFile(String address, String method, String fileName) at System.Net.WebClient.UploadFile(String address, String fileName) at WebService.Pervasive.UpLoadFile(String strUriString, String strFileName) in E:\VsPrj\RealNet\WebService\WSPervasive.asmx.vb:line 92 --- End of inner exception stack trace ---

se invece modifico la chiamata di myWebClient.UploadFile:
Dim responseArray As Byte() = myWebClient.UploadFile(strUriString, "PUT", strFileName)
allora il trasferimento funziona, però viene aggiunta al file l'intestazione a cui RobertoGM faceva riferimento ed inoltre responseArray è vuoto, però il file viene trasferito.

Questions:
devo usare per forza il PUT ?
c'è un sistema per evitare che al file venga aggiunta l'intestazione?
perchè l'array restituito dal metodo è vuoto?

aggiungo che sviluppo con VStudio.NET su XP, NET Framework 1.0, Explorer 6.0, IIS 5.1

Saluti, paolo
se usi POST come metodo non funziona?

Daniele Bochicchio | ASPItalia.com | Libri
Chief Operating Officer@iCubed
Microsoft Regional Director & MVP
567 messaggi dal 18 marzo 2002
no, se uso post viene generata l'eccezione che ho postato precedentemente, anche se non specifichi il metodo il post viene preso di default.
Potrebbe dipendere da IIS ?
567 messaggi dal 18 marzo 2002
non so se può essere importante, comunque mi ero dimenticato di dire che ottengo questa eccezione facendo dei test in locale, nel senso che il sistema di sviluppo ed il web server sono installati entrambi nella mia macchina.
Paolo
non vorrei che fosse IIS 5.1. hai possibilità di provarlo con un 5.0?

Daniele Bochicchio | ASPItalia.com | Libri
Chief Operating Officer@iCubed
Microsoft Regional Director & MVP
567 messaggi dal 18 marzo 2002
stessa cosa anche con il 5.0.
Comunque quello che non riesco a capire è la logica con cui funziona questo metodo; io ho provato a richiamare il web-service che sta su una macchina nella mia lan dove c'è installato IIS 5.0 ma ricevo un errore dovuto al fatto che il file da trasferire che passo al metodo non è presente sul server.
Ma questo mi sembra ovvio perchè il file che voglio trasferire non ha senso che si trovi già sul server; mi sa che adottero ftp
Paolo
in realtà è un po' complesso, un webservice dovrebbe essere invocato in maniera "automatica" da un'applicazione. c'è un protocollo apposta (WS-Attachments se non ricordo male) per trasferire files binari.

Daniele Bochicchio | ASPItalia.com | Libri
Chief Operating Officer@iCubed
Microsoft Regional Director & MVP
567 messaggi dal 18 marzo 2002
Impostiamo la questione in termini diversi.
Da un applicativo VB6 che gira nella mia rete locale devo trasferire dei file verso un web server remoto, qual'è il sistema migliore e possibilmente più facile da implementare ?

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.