В моем собственном веб-сервисе у меня есть метод сервера для получения загруженного изображения:
[System.ServiceModel.OperationContract, WebInvoke(UriTemplate = "MalaDireta/saveImage")]
string MD_saveImage(Stream arq);
public string MD_saveImage(Stream img) {
try {
Image i = Image.FromStream(img);
//Here I just show received image in a PictureBox
new ImageTest(i).ShowDialog();
}
catch (Exception ex) {
MessageBox.Show("Exception:\n" + ex.ToString());
}
return "test";
}
Со следующим файлом App.config:
<?xml version="1.0"?>
<configuration>
<system.serviceModel>
<bindings>
</bindings>
<services>
<service name="WebService.RestService" behaviorConfiguration="Default">
<host>
<baseAddresses>
</baseAddresses>
</host>
<endpoint address="" binding="webHttpBinding" behaviorConfiguration="webBehavior" contract="WebService.ICarga"></endpoint>
</service>
</services>
<behaviors>
<endpointBehaviors>
<behavior name="webBehavior">
<webHttp />
</behavior>
</endpointBehaviors>
<serviceBehaviors>
<behavior name="Default">
<serviceMetadata httpGetEnabled="true"/>
<dataContractSerializer maxItemsInObjectGraph="2147483647"/>
</behavior>
</serviceBehaviors>
</behaviors>
</system.serviceModel>
<startup>
<supportedRuntime version="v4.0" sku=".NETFramework,Version=v4.0"/>
</startup>
</configuration>
И следующий метод клиента для загрузки изображения (у клиента нет App.config):
Image img = Image.FromFile("fileName");
MemoryStream ms = new MemoryStream();
img.Save(ms, ImageFormat.Png);
Uri uri = new Uri("http://m.y.i.p:port/MalaDireta/saveImage");
WebClient client = new WebClient();
ms.Position = 0;
try {
client.UploadData(uri, ms.ToArray());
}
catch (Exception exc) {
MessageBox.Show("Error at insertion.\n Exception: " + exc.ToString());
}
И это прекрасно работает, если размер изображения не превышает 60 КБ. В противном случае я получаю «Ошибка 400: неверный запрос», и в этом случае метод сервера даже не запускается (я пробовал с MessageBox в начале метода). Я безуспешно пытался изменить некоторые вещи в сервере App.Config (вероятно, из-за моего непонимания файла конфигурации). Подскажите, пожалуйста, как можно загружать большие файлы?
Заранее спасибо.