Привет Недавно я попытался создать простой веб-сервис, способный к потоковой передаче данных через компонент загрузки файлов ExtJS. Я успешно сделал это с помощью конфигурации webHttp, тем не менее, я хотел бы сделать это с basicHttpBinding или, что еще лучше, с wsHttpBinding.
Я все еще получаю 415 неподдерживаемый тип носителя, пока не нашел ответа.Это мой web.config:
<basicHttpBinding>
<binding maxReceivedMessageSize="67108864" transferMode="Streamed"/>
</basicHttpBinding>
</bindings>
<behaviors>
<serviceBehaviors>
<behavior>
<serviceMetadata httpGetEnabled="True"/>
<serviceDebug includeExceptionDetailInFaults="False"/>
</behavior>
</serviceBehaviors>
</behaviors>
<services>
<service name="WebApp.Service1" >
<endpoint
address=""
binding="basicHttpBinding"
contract="WebApp.Service1" />
</service>
</services>
Также мой Сервис определен как
[ServiceContract(Namespace = "")]
public class Service1
{
[OperationContract]
public bool DoWork(Stream data)
{
MultipartParser parser = new MultipartParser(data);
StreamedResponse response = new StreamedResponse();
response.Success = true;
return true;
}
}
Это только для целей тестирования, простопытаясь заставить это работать.На самом деле я хотел бы обернуть это в Wrapped Request и ответ, но это уже другая история.
О, да, мой Ext Code выглядит так:
var fp = new Ext.FormPanel({
renderTo: 'fi-form',
fileUpload: true,
width: 500,
frame: true,
title: 'File Upload Form',
autoHeight: true,
bodyStyle: 'padding: 10px 10px 0 10px;',
labelWidth: 50,
defaults: {
anchor: '95%',
allowBlank: false,
msgTarget: 'side'
},
items: [{
xtype: 'fileuploadfield',
id: 'form-file',
emptyText: 'Select an image',
fieldLabel: 'Photo',
name: 'data',
buttonText: '',
buttonCfg: {
iconCls: 'upload-icon'
},
listeners: {
'fileselected': function () {
if (fp.getForm().isValid()) {
fp.getForm().submit({
url: '/Service1.svc/DoWork',
waitMsg: 'Uploading your photo...',
success: function (fp, o) {
msg('Success', 'Processed file "' + o.result.file + '" on the server');
}
});
}
}
}
}],
buttons: [{
text: 'Save',}, {
text: 'Reset',
handler: function () {
fp.getForm().reset();
}
}]
});