Загрузка файла службы WCf - PullRequest
2 голосов
/ 04 октября 2009

Я создаю сервис WCF, который будет загружать и загружать XML-файлы. При попытке загрузить файл клиенту выдается следующая ошибка:

"Тип содержимого text / html; charset = utf-8 ответного сообщения не соответствует типу содержимого привязки (multipart / related; type = \" application / xop + xml \ "). При использовании пользовательский кодировщик, убедитесь, что метод IsContentTypeSupported реализован правильно. Первые 1024 байта ответа были: '\ n http://www.w3.org/1999/xhtml\"> \ n \ nIIS 7.0 Подробная ошибка - 500.19 - Внутренняя ошибка сервера \ n \ n

Я использую basicHTTPBinding в качестве протокола привязки. Мой веб-сервис в настоящее время размещен на моем собственном компьютере на IIS7.0 под Vista Home Premium. Код загрузки в сервисе, которым я пользуюсь, следующий:

 public Stream Download( string path )
    {
        try
        {
            using (FileStream stream = new FileStream(path, FileMode.Open, FileAccess.Read))
            {

                return stream;
            }
        }
        catch (Exception ex)
        {
            string error = ex.Message;

            return null;
        }
    }

Код на моем клиенте, который должен загрузить файл, выглядит следующим образом, с использованием обычного тестового файла:

 System.IO.FileStream fs;
        try
        {
            fs = (System.IO.FileStream)client.Download(@"C:\UploadedFiles\Test.txt");
            byte[] arr = new byte[fs.Length];
            int read;
            do
            {
                read = fs.Read(arr, 0, arr.Length);

            } while (read != arr.Length);

            Console.WriteLine(ASCIIEncoding.ASCII.GetString(arr));
            Console.ReadLine();
        }
        catch (Exception Ex)
        {
            string error = Ex.Message;
            string inner = Ex.InnerException.ToString(); ;
            Console.WriteLine("Exception: {0}/nInner Exception: {1}",error,inner);
            Console.ReadLine();
        }

Кто-нибудь, пожалуйста, помогите мне, я не понимаю, что не так?

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

Большое спасибо, T

1 Ответ

1 голос
/ 04 октября 2009

«Внутренняя ошибка сервера» должна предупредить вас о том, что именно на сервере возникла проблема с «обслуживанием» службы. Ваш код даже не имеет возможности выполнить, поэтому он не является виновником. Необходимо убедиться, что IIS настроен правильно.

Начните с проверки правильности вашего режима аутентификации. Если вы используете олицетворение, вам также необходимо активировать его. Если вы используете ASP.NET Development Server (тот, который автоматически запускается на вашем компьютере при запуске отладки), то вы должны знать, что он довольно слаб, когда речь идет о вашей конфигурации. IIS требователен.

Практически все изменения, которые вы вносите в IIS, также могут быть отражены через ваш web.config, поэтому помните, что вы сделали изменения в IIS, и отразите эти изменения в вашем web.config. Это гарантирует, что проблемы не возникнут снова (скажем, после другой сборки).

Если ваш проект представляет собой «Приложение-службу WCF», вы сможете увидеть более подробное сообщение об ошибке, войдя на сервер, на котором размещена служба, и просмотрев файл .svc из браузера.

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