Загрузка файла в сервис WCF 3.5 - PullRequest
2 голосов
/ 13 июля 2011

У меня есть служба .NET 3.5 WCF.Это выглядит так:

namespace FileUploaderWcfRestService
{
    [ServiceContract]
    interface IUploaderService
    {
        [OperationContract(IsOneWay = true)]
        [WebInvoke(Method = "POST", UriTemplate = "/UploadFile?fileName={fileName}")]
        void UploadFile(string fileName, Stream fileContents);
    }

    [ServiceBehavior(InstanceContextMode = InstanceContextMode.PerCall)]
    [AspNetCompatibilityRequirements(RequirementsMode = AspNetCompatibilityRequirementsMode.Allowed)]
    public class UploaderService : IUploaderService
    {
        public void UploadFile(string fileName, Stream fileContents)
        {
            // save to disk code
        }
    }
}

В файле web.config у меня есть настройка конечной точки следующим образом:

<endpoint address="" 
        binding="webHttpBinding" 
        contract="FileUploaderWcfRestService.IUploaderService">

На клиенте я пытаюсь вызвать его с помощью объекта WebClient, но неизменно получаю ошибку 415 (Неподдерживаемый тип носителя).

var wc = new WebClient();
string url = "http://localhost:23619/UploaderService.svc/UploadFile?fileName=todo.sdf";

byte[] data = GetBytesFromFile("ToDo.sdf");  // gets the file into a byte array
byte[] resp = wc.UploadData(url, "POST", data);

Я пробовал разные варианты URL, но ничего не помогло.Что мне здесь не хватает?

1 Ответ

4 голосов
/ 13 июля 2011

Вы пытались установить заголовок ContentType в WebClient для типа содержимого файла?

wc.Headers.Add("Content-Type","application/octet-stream");
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...