Passing long parameters to REST service avoiding 414 error

Forgive me if this is a little OT. I’m replying by myself 'cause maybe I can help someone else.

If I POST data with 3rd parameter of Ajax() call, in REST service it’s mandatory to put a stream parameter in implementing function (and of course in the Interface declaration). So here’s my code:

<OperationContract()> <WebInvoke(Method:="POST", UriTemplate:="insertfoto/?uid={userid}&pwd={password}&dioc={dioc}&coda={coda}", ResponseFormat:=WebMessageFormat.Json)>
Function InsertFoto(userid As String, password As String, dioc As String, coda As String, foto As Stream) As String

Public Function InsertFoto(userid As String, password As String, dioc As String, coda As String, foto As Stream) As String Implements IUpdateDati.InsertFoto
    Dim leggi As String = New StreamReader(foto).ReadToEnd
    Dim img As Byte() = Convert.FromBase64String(leggi)
    Dim sqnCs = System.Web.Configuration.WebConfigurationManager.ConnectionStrings("CamminoSqlDB").ConnectionString
    Dim sqc As New SqlConnection(sqnCs)
    Dim cmdUpFoto As New SqlCommand("UPDATE Anagrafica SET Foto = @Foto WHERE CodDiocesi = " + CStr(dioc) + " AND CodAnagrafica = " + CStr(coda), sqc)
    Dim parFoto As New SqlParameter("@Foto", System.Data.SqlDbType.Image)
    parFoto.Value = img
    cmdUpFoto.Parameters.Add(parFoto)
    sqc.Open()
    Dim rkUpd = cmdUpFoto.ExecuteNonQuery()
    sqc.Close()
    Return "Foto aggiornata correttamente"
End Function

Finally, this is my VB code (pls note that I had to use PictureBox4.src instead of .toDataURL):

  Dim foto=PictureBox4.src
  URL="http://"+txtSvr.value+"/RestSvc4Gescom/UpdateDati.svc/insertfoto/?uid="+txtUserId.value+"&pwd="+txtPassword.value+"&dioc="+codDiocesi4+"&coda="+coda
  encURL=encodeURI(URL)
  req=Ajax(encURL,"POST",foto)