.NET 3.5 и Web Service

После переходна на новую ферсию .net framework, как и следовало ожидать, некоторый код потерял свою работоспособность. Перестали работать веб-службы. Точнее одна из них.

Серверный её код ничем не выделяется от остальных:

<font face="Courier New" size="2" color="black">[WebService(Namespace = <font color="#a31515">"myns"</font>)]<br />
[WebServiceBinding(ConformsTo = WsiProfiles.BasicProfile1_1)]<br />
[ScriptService]<br />
<font color="#0000ff">public</font> <font color="#0000ff">class</font> MyService : WebService<br />
{<br />
  [WebMethod, ScriptMethod(ResponseFormat = ResponseFormat.Json)]<br />
  <font color="#0000ff">public</font> List<<font color="#0000ff">string</font>> GetData()<br />
  {<br />
     List<<font color="#0000ff">string</font>> result;<br />
     <font color="#008000">//вся необходимая логика</font><br />
     <font color="#0000ff">return</font> result;<br />
  }<br />
}</font><font size="1" color="gray"><br />
<br />
</font>

 Главное отличие её от других заключается в том, что обращение к ней идёт не с помощью ScriptManager и ServiceReference (в таком случае всё работает), а вызывается методом POST по url напрямую с javascript.

 В .net 2.0 всё работало на ура, но в новой версии фреймворка от сервера приходил ответ слудующего вида:

{“d”:__type”:“typeName”,“name”:“item1”,“value”:“item2”}

Т.е. получался объект d, а не тот, что передавался служюой, из-за чего скипт работал неправильно. Похожая ситуация и её объяснение описываются здесь. Security - это, конечно хорошо, но зачем было менять то, что работало в предыдущих версиях .net по умолчанию? Может это повод над тем, что пора отказываться от веб-служб и начинать использовать WCF? Ведь там это всё настраивается с помощью атрибутов.

А пока решение проблемы не найдено, приходится использовать обвёртку и закрывать от глаз тип d.

 

 

Tags

.net .net-framework .net-framework-3.5 agile ajax ajax-control-toolkit ampq ansible apache asp.net asp.net-mvc automation axum babel bash benchmark blog blog-engine bootstrap buildout c# cache centos chrome ci cinder ckan cli cloud code-review codeplex community config debugger deface dependencies development-environment devices devstack devtime disks django dlr dns docker dockerimage dos easy_install elmah encoding environment-variables error event events everything-as-a-code exception exceptions fabrik firefox flask foreach forms fstab gae gcc gerrit git github go google google-app-engine grep hack hacked hardware headless horizon hound html hugo iaas ienumerable iis internet iptables iron-python ironic iscsi java-script javascript jenkins jquery js jsx kharkivpy kiss kombu kvm kyiv lettuce libvirt linux lio loci logging loopback losetup lvm mac-os macos mercurial microsoft microsoft-sync-framework mobile mono ms-office msbuild networking news nginx npm npx offtopic oop open-source open-xml opensource openstack openvswitch os packages paraller-development patterns-practices performance php pika pip plugins pnp podcast popup postgresql profiler project protocols proxy pycamp pycharm pycon pykyiv pylint pypi python python-3 qcow quantum qumy rabbitmq rar react reactjs refactoring rfc rhel search-engine security selenium server shell silverlight socket software-engineering source-control sourcegear-vault sources sql sql-server sql-server-express sqlalchemy ssh static-site sublimetext svg tests tgt tipfy tornado typescript uapycon ui uneta unit-tests upgrades usability vim virtualenv visual-studio vitrage vm vue.js vuejs web-development web-server web-service web_root webpack webroot windows windows-live word-press x32 x64 xcode xml xss xvfb интернет-магазин книги


Archives

2019 (73)
2018 (2)
2017 (3)
2016 (2)
2015 (3)
2014 (5)
2013 (17)
2012 (22)
2011 (35)
2010 (25)
2009 (35)
2008 (32)
2007 (2)