Объект параметра WebService переименовывается - PullRequest
0 голосов
/ 26 марта 2009

Впервые я использую веб-сервис для чего-либо, поэтому вопрос может быть немного базовым. Во всяком случае, у меня есть веб-сервис, который выступает в качестве прокси для сайта наших поставщиков. Это упрощает «очистку экрана», которую мы обычно делаем. Функция веб-сервиса выглядит следующим образом:

namespace foo  
{  
  public class MyService : WebService  
  {
     [WebMethod]  
     public string UploadFile(System.IO.FileStream fileToUpload)  
     {
        return _obj.Upload(fileToUpload);  
     }  
  }  
}    

Клиент выдает ошибку, когда вы пытаетесь передать ему FileStream, который запрашивает метод. В процессе компиляции веб-служба изменила тип параметра с System.IO.FileStream на foo.FileStream. У кого-нибудь есть идеи относительно того, как я это сделал для себя?

Заранее спасибо!

Ответы [ 2 ]

0 голосов
/ 26 марта 2009

Веб-службы ASMX не поддерживают использование System.IO.Stream или любого производного типа Stream. Вам понадобится WCF для этого.

0 голосов
/ 26 марта 2009

В .NET, когда вы совершаете звонки через домены приложения (как вы здесь), вы не можете передавать данные, относящиеся к этому домену приложения.

Общая версия этого заключается в том, что когда вы делаете вызовы между двумя отдельными процессами, вы не можете отправлять информацию, которая является специфической (то есть имеет значение только в этом контексте) для этого процесса, и ожидать, что она будет иметь значение в другом процесс.

Это то, что вы делаете с файловым потоком. Файловый поток - это дескриптор файла в ОС, специфичный для процесса. Нет гарантии, что процесс на том же компьютере, не говоря уже о процессе на другом компьютере, сможет это понять.

Это веб-служба, и это именно та ситуация, в которой вы находитесь, поскольку у вас есть два процесса на разных машинах.

Для решения проблемы отправляемые вами данные должны быть автономными. В данном конкретном случае это означает отправку содержимого всего файла.

Вы должны изменить параметр на байтовый массив, а затем соответствующим образом обработать байты в вашем методе.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...