Я пытаюсь отобразить изображение в окне изображения. Приложение имеет две части. Первая часть - это приложение для Windows, а вторая часть - веб-сервис (asmx).Функция возвращает System.IO.MemoryStream?
Это код для окна приложения:
Public Sub PrikazSlike()
Dim p As localhost.Service1 = New localhost.Service1()
PictureBox1.Image = Image.FromStream(p.PictureShow())
End Sub
И это код для веб-сервиса:
Imports System.Web.Services
Imports System.Web.Services.Protocols
Imports System.ComponentModel
Imports System.IO
' To allow this Web Service to be called from script, using ASP.NET AJAX, uncomment the following line.
' <System.Web.Script.Services.ScriptService()> _
<System.Web.Services.WebService(Namespace:="http://tempuri.org/")> _
<System.Web.Services.WebServiceBinding(ConformsTo:=WsiProfiles.BasicProfile1_1)> _
<ToolboxItem(False)> _
Public Class Service1
Inherits System.Web.Services.WebService
<WebMethod()> _
Public Function PictureShow() As System.IO.MemoryStream
Dim client As New System.Net.WebClient()
Dim stream1 As New System.IO.MemoryStream()
Dim data As Byte() = client.DownloadData("http://www.psp-themes.net/.../assassins%20creed%203.jpg")
client.Dispose()
stream1.Write(data, 0, data.Length)
Return stream1
End Function
End Class
Проблема заключается в том, что функция в веб-службы не возвращает System.IO. Тип данных MemoryStream, поэтому я получаю сообщение об ошибке, не может преобразовать: Ошибка 1 Значение типа «WindowsApplication1.localhost.MemoryStream» не может быть преобразовано в «System.IO.Stream».
Как я могу это решить?
Большое спасибо!
Update (первоначально размещен как 'ответ')
Это код обновления для веб-сервиса:
<WebMethod()> _
Public Function PrikazSlike() As Byte
Dim client As New System.Net.WebClient()
'Dim data As Byte
Dim data As Byte() = client.DownloadData("http://www.psp-themes.net/.../assassins%20creed%203.jpg")
Dim stream1 As New System.IO.MemoryStream(data)
client.Dispose()
stream1.Write(data, 0, data.Length)
Return Convert.ToByte(stream1)
End Function
End Class
Это код окна приложения:
Public Sub Show.Picture()
Dim p As localhost.Service1 = New localhost.Service1()
PictureBox1.Image = Image.FromStream(p.PictureShow())
End Sub
Теперь я получаю ошибку:
E rror 1 Значение типа «Byte» не может быть преобразовано в «System.IO.Stream».
Хорошо. Я изменил веб-службы для возврата байт: _ Public PrikazSlike Function() As Byte Dim клиента As New System.Net.WebClient() Dim stream1 As New System.IO.MemoryStream() данные Dim As Byte () = client.DownloadData ("http://www.psp-themes.net/.../assassins%20creed%203.jpg") client.Dispose() stream1.Write (данные, 0, data.Length) Return Convert.ToByte (stream1) End Function End Class Но теперь, как я могу преобразовать байты в System.IO.MemoryStream в приложении Windows. –
Comii
Используйте конструктор для MemoryStream, который принимает байтовый массив. Dim stream1 As New System.IO.MemoryStream (данные) –
Теперь я получаю ошибку при использовании Windows: Ошибка Значение типа «Byte» не может быть преобразовано в «System.IO.Stream». – Comii