none
Errore nella richiesta di download RRS feed

  • Domanda

  • Buongiorno, io ho sviluppato un servizio in wcf (c#) per gestire il download di alcuni file. Ho trovato una guida che mi permette di scaricare file anche di grandi dimensioni:

    https://www.codeproject.com/Articles/166763/WCF-Streaming-Upload-Download-Files-Over-HTTP

    Quando vado ad implementare il client (scritto in WPF) mi da questo errore: 

    System.ServiceModel.FaultException`1 occurred
      HResult=0x80131501
      Message='/' is an unexpected token. The expected token is '='. Line 1, position 19.
      Source=mscorlib
      StackTrace:
       at System.Runtime.Remoting.Proxies.RealProxy.HandleReturnMessage(IMessage reqMsg, IMessage retMsg)
       at System.Runtime.Remoting.Proxies.RealProxy.PrivateInvoke(MessageData& msgData, Int32 type)
       at asdasd.ServiceReference1.IService1.DownloadFile(FileDownload request)
       at asdasd.ServiceReference1.Service1Client.asdasd.ServiceReference1.IService1.DownloadFile(FileDownload request) in F:\...\Reference.cs:line 667
       at asdasd.ServiceReference1.Service1Client.DownloadFile(String& FileName, String& Id, Stream& FileByteStream) in F:\...\Reference.cs:line 675
       at asdasd.ViewModel.MainViewModel.SalvaDatabase(Object parameters) in F:\...\ViewModel\MainViewModel.cs:line 500
       at System.Threading.ThreadHelper.ThreadStart_Context(Object state)
       at System.Threading.ExecutionContext.RunInternal(ExecutionContext executionContext, ContextCallback callback, Object state, Boolean preserveSyncCtx)
       at System.Threading.ExecutionContext.Run(ExecutionContext executionContext, ContextCallback callback, Object state, Boolean preserveSyncCtx)
       at System.Threading.ExecutionContext.Run(ExecutionContext executionContext, ContextCallback callback, Object state)
       at System.Threading.ThreadHelper.ThreadStart(Object obj)

    Sembra quasi che il servizio fallisca a creare la giusta richiesta

    qualcuna so come posso correggere?

    mercoledì 3 maggio 2017 11:38

Risposte

Tutte le risposte

  • Senza vedere il codice sorgente è un pò complesso, l'errore sembra causato da un parametro passato male ma è un sasso in uno stagno alla cieca ;)
    mercoledì 3 maggio 2017 12:54
  • allora il servizio è collegato all'applicazione WPF tramite il bottone "add service reference", quindi quella parte è tutta codige autogerato, nell'aplicazione lo richiamo così:

    ServiceReference1.Service1Client client = new ServiceReference1.Service1Client();

    System.IO.Stream lettura = new System.IO.MemoryStream(new byte[0]); tring file = ""; string id = param[0].ToString(); client.DownloadFile(ref file, ref id, ref lettura);

    nel servizio :

    public FileDownload DownloadFile(FileDownload file)
    {
      try
      {
    	SQL db = new SQL();
    	db.Open(cfg["ConnectionDatabase"]);
    	DataTable tbl = db.Reader("SELECT path FROM elenco WHERE id = " + file.Id);
    	if (tbl.Rows.Count == 0) return null;
    	file.FileName = tbl.Rows[0]["path"].ToString();
    	if (System.IO.File.Exists(file.FileName))
    	{
    	  file.FileByteStream.Close();
    	  file.FileByteStream = new System.IO.FileStream(file.FileName, System.IO.FileMode.Open);
    	}
    	else
    	  SalvaMessaggio("File " + file.FileName + " non trovato!!!", "Download Database", "DownloadFile");
      }
      catch (Exception err)
      {
    	SalvaMessaggio(err.ToString(), "Download Database", "DownloadFile");
      }
      return file;
    }


    mercoledì 3 maggio 2017 13:01
  • Risolto! A quanto pare le exception non gestite edl servizio WCF vengono "riflesse" anche sul client
    • Contrassegnato come risposta MatteoZambon venerdì 5 maggio 2017 06:27
    venerdì 5 maggio 2017 06:27