Еще один подход к моему личному проекту - отправить новый токен, когда я успешно отправлю свою форму:
Например, над моей формой (которая загружает файл) у меня есть follwing html:
<form id="upload_form" type="multipart/form-data" data-csrf="{{csrfToken}}" method="post" action="/data_assets">
<input id="excell_upload" type="file" style="visible:hidden" name="data_assets"/>
</form>
И при изменении файла я запускаю такую загрузку:
$('#excell_upload').on('change',function(event){
event.preventDefault();
var formData = new FormData($("#upload_form")[0]);
$.ajax({
'type':$("#upload_form").attr('method'),
'data': formData,
'url': $("#upload_form").attr('action'),
'processData': false,
'contentType': false,
'mimeType': 'multipart/form-data',
'headers': {"X-CSRF-Token": $("#upload_form").attr('data-csrf') },
'beforeSend': function (x) {
if (x && x.overrideMimeType) {
x.overrideMimeType("multipart/form-data");
}
$('#trigger_upload').addClass('disabled');
},
'success':function(data){
$('#upload_form').attr('data-csrf',data.csrfToken)
},
'fail':function(){
},
'complete':function(){
$('#trigger_upload').removeClass('disabled');
}
});
});
Как вы заметили, я получаю новый токен csrf, чтобы иметь возможность повторно использовать мою форму для новых отправлений. Я регенерирую токен CSRF следующим образом:
app.post('/data_assets',function(req,res,next){
res.json({'csrfToken':req.csrfToken()});
});
Можно инстанцировать привязки, дающей обязательное имя конфигурации от App.config/Web.config.
http://msdn.microsoft.com/en-us/library/ms575163.aspx
Инициализирует новый экземпляр класса WSHttpBinding с привязкой, определенной ее именем конфигурации.
следующий пример показывает, как инициализировать новый экземпляр класса WSHttpBinding с аргументом строки.
// Set the IssuerBinding to a WSHttpBinding loaded from config b.Security.Message.IssuerBinding = new WSHttpBinding("Issuer");
Выезд этот сообщение в блоге от Mark Gabarra, это показывает, как перечислить настроенную привязку
Одна развязная опция могла бы состоять в том, чтобы создать экземпляр с конструктором по умолчанию, использовать в качестве шаблона:
Binding defaultBinding;
using(TestServiceClient client = new TestServiceClient()) {
defaultBinding = client.Endpoint.Binding;
}
Тогда убирают это и снова используют его. Какая-либо справка?
Если вы не знаете тип привязки до времени выполнения, вы можете использовать следующее:
return (Binding)Activator.CreateInstance(bindingType, endpointConfigName);
Где bindingType для типа привязки, а endpointConfigName - это имя, указанное в файле конфигурации.
Все включенные привязки предоставляют конструктор, который принимает endpointConfigurationName в качестве единственного параметра, так что это должно работать для всех из них. Я без проблем использовал его для WsHttpBinding и NetTcpBinding.