Тип конфликтует с самим собой только потому, что он включен в качестве возвращаемого типа веб-метода в веб-службу ASP.NET? - PullRequest
0 голосов
/ 14 мая 2009

У меня раздражающая проблема, я создаю веб-сервис asp.net; этот сервис должен предоставлять функциональность существующей библиотеки, сервис позволяет пользователям загружать файлы на наш сервер, вызывая метод UploadFile в сервисе. Вот подпись метода UploadFile

public bool UploadFile(string bucketName, string desiredFileName, System.IO.Stream fileData)


Теперь, когда я пытаюсь вызвать этот метод и передать ему объект System.IO.Stream, ссылающийся на загружаемый файл, я получаю ошибку времени компиляции, указывающую на переданный тип (System.IO.Stream) не является ожидаемым типом (Mynamespace.ServiceReference.Stream). Я пытался явно привести мой поток к типу (Mynamespace.ServiceReference.Stream), но компилятор не позволил бы мне сделать это, хотя они одного типа! weired!

Ответы [ 2 ]

2 голосов
/ 14 мая 2009

Проблема в том, что для генерации WSDL поток будет пытаться сериализоваться, что не может сделать.

Ваша первоначальная идея байта [] - правильный способ сделать это.

Вам не нужно беспокоиться о преобразовании Base64, потому что среда выполнения ASP.NET уже сделает это за вас.

0 голосов
/ 14 мая 2009

Вот решение.

Вместо указания байта [] в качестве аргумента для данных файла используйте представление строки base64 байта [].

от клиента, который использует ваш веб-сервис, пусть он преобразует байт [] в строку base64, а затем передает это вашему вызову веб-сервиса. На стороне сервера вы должны получить строку base64 байтового массива и преобразовать ее обратно в байт [].

Вот ссылки на методы преобразования в .Net Framework.

От байта [] до Base64 - для использования в клиентах веб-сервиса

текст ссылки: http://msdn.microsoft.com/en-us/library/dhx0d524.aspx

От Base64 до байта [] - для использования на сервере веб-сервиса

текст ссылки: http://msdn.microsoft.com/en-us/library/system.convert.frombase64string.aspx

...