.NET Webservice больше не возвращает данные JSON - PullRequest
1 голос
/ 19 ноября 2009

В последние месяцы я занимался созданием .NET Webservice с несколькими функциями и веб-сайтом, написанным на html и Javascript, который действует как пользовательский интерфейс и вызывает методы webservice с JSON. Веб-сервис вернул JSON-ответы, и он работал очень хорошо. Затем я сконцентрировался на веб-сервисе, чтобы завершить все функции, и не открывал сайт около 3 недель.

Сегодня я закончил веб-сервис и решил продолжить работу над сайтом. Но когда я открыл его, я обнаружил, что связь JSON больше не работает ...

Веб-сайт по-прежнему отправляет запросы JSON (это проверено с помощью сетевого анализатора), но веб-служба больше не отвечает, поэтому это должно быть проблемой на стороне веб-службы.

Я пытаюсь найти проблему весь день, но ничего не могу найти .. Вот некоторые фрагменты кода, которые могут быть полезны

Заголовки веб-сервиса:

 [WebService(Namespace = "http://meijberg.topicus.local/zdfmobiel")]
 [WebServiceBinding(ConformsTo = WsiProfiles.BasicProfile1_1)]
 [ScriptService]
 [System.ComponentModel.ToolboxItem(false)]

 public class ZDFMobielWebservice : WebService {

Файл Web.Config

<?xml version="1.0"?>
<configuration>
    <configSections>
        <sectionGroup name="system.web.extensions" type="System.Web.Configuration.SystemWebExtensionsSectionGroup, System.Web.Extensions, Version=3.5.0.0, Culture=neutral, PublicKeyToken=31BF3856AD364E35">
            <sectionGroup name="scripting" type="System.Web.Configuration.ScriptingSectionGroup, System.Web.Extensions, Version=3.5.0.0, Culture=neutral, PublicKeyToken=31BF3856AD364E35">
                <section name="scriptResourceHandler" type="System.Web.Configuration.ScriptingScriptResourceHandlerSection, System.Web.Extensions, Version=3.5.0.0, Culture=neutral, PublicKeyToken=31BF3856AD364E35" requirePermission="false" allowDefinition="MachineToApplication"/>
                <sectionGroup name="webServices" type="System.Web.Configuration.ScriptingWebServicesSectionGroup, System.Web.Extensions, Version=3.5.0.0, Culture=neutral, PublicKeyToken=31BF3856AD364E35">
                    <section name="jsonSerialization" type="System.Web.Configuration.ScriptingJsonSerializationSection, System.Web.Extensions, Version=3.5.0.0, Culture=neutral, PublicKeyToken=31BF3856AD364E35" requirePermission="false" allowDefinition="Everywhere"/>
                    <section name="profileService" type="System.Web.Configuration.ScriptingProfileServiceSection, System.Web.Extensions, Version=3.5.0.0, Culture=neutral, PublicKeyToken=31BF3856AD364E35" requirePermission="false" allowDefinition="MachineToApplication"/>
                    <section name="authenticationService" type="System.Web.Configuration.ScriptingAuthenticationServiceSection, System.Web.Extensions, Version=3.5.0.0, Culture=neutral, PublicKeyToken=31BF3856AD364E35" requirePermission="false" allowDefinition="MachineToApplication"/>
                    <section name="roleService" type="System.Web.Configuration.ScriptingRoleServiceSection, System.Web.Extensions, Version=3.5.0.0, Culture=neutral, PublicKeyToken=31BF3856AD364E35" requirePermission="false" allowDefinition="MachineToApplication"/>
                </sectionGroup>
            </sectionGroup>
        </sectionGroup>
    <sectionGroup name="declaratieverwerking">
      <section name="db" type="System.Configuration.NameValueSectionHandler, System, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089"/>
      <section name="msmq" type="System.Configuration.NameValueSectionHandler, System, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089"/>
    </sectionGroup>
    <sectionGroup name="spring">
      <section name="context" type="Spring.Context.Support.WebContextHandler, Spring.Web"/>
      <section name="parsers" type="Spring.Context.Support.NamespaceParsersSectionHandler, Spring.Core"/>
    </sectionGroup>
    </configSections>



  <declaratieverwerking>
    <db>
      <add key="datasource" value="CARTMAN"/>
      <add key="database" value="DV_TRUNK"/>
      <add key="user" value="****"/>
      <add key="password" value="****"/>
      <add key="applicationName" value="DeclaratieVerwerking.WebApplication"/>
    </db>
    <msmq>
      <add key="DeclaratieRegelHA304Queue" value=".\Private$\DV_DeclaratieRegelHA304Queue"/>
      <add key="DeclaratieRegelAP304Queue" value=".\Private$\DV_DeclaratieRegelAP304Queue"/>
      <add key="DeclaratieRegelZH308Queue" value=".\Private$\DV_DeclaratieRegelZH308Queue"/>
      <add key="DeclaratieBerichtHA304Queue" value=".\Private$\DV_DeclaratieBerichtHA304Queue"/>
      <add key="DeclaratieBerichtAP304Queue" value=".\Private$\DV_DeclaratieBerichtAP304Queue"/>
      <add key="DeclaratieBerichtZH308Queue" value=".\Private$\DV_DeclaratieBerichtZH308Queue"/>
      <add key="ErrorQueue" value=".\Private$\DV_ErrorQueue"/>
    </msmq>
  </declaratieverwerking>


  <appSettings>
    <add key="RecreateHibernateMapping" value="True"/>
    <add key="UseUpdateSchema" value="True"/>
  </appSettings>

  <connectionStrings/>

  <system.serviceModel>
    <behaviors>
      <endpointBehaviors>
        <behavior name="AjaxEndpointBehavior">
          <enableWebScript/>
        </behavior>
      </endpointBehaviors>
    </behaviors>
    <services>
      <service name="ZDFMobiel.Webservice.ZDFMobielWebservice">
        <endpoint adress=""
          behaviorConfiguration="AspNetAjaxBehavior"
          binding="webHttpBinding"
          contract="ZDFMobiel.Webservice.ZDFMobielWebservice" />
      </service>
    </services>
  </system.serviceModel>

  <spring>
    <context>
      <resource uri="~/Config/Spring.config"/>
    </context>
    <parsers>
      <parser type="Spring.Data.Config.DatabaseNamespaceParser, Spring.Data"/>
      <parser type="Spring.Transaction.Config.TxNamespaceParser, Spring.Data"/>
    </parsers>
  </spring>


  <system.web>

    <webServices>
      <protocols>
        <add name="HttpGet"/>
        <add name="HttpPost"/>
      </protocols>
    </webServices>    

        <compilation debug="true">
            <assemblies>
                <add assembly="System.Core, Version=3.5.0.0, Culture=neutral, PublicKeyToken=B77A5C561934E089"/>
                <add assembly="System.Data.DataSetExtensions, Version=3.5.0.0, Culture=neutral, PublicKeyToken=B77A5C561934E089"/>
                <add assembly="System.Web.Extensions, Version=3.5.0.0, Culture=neutral, PublicKeyToken=31BF3856AD364E35"/>
                <add assembly="System.Xml.Linq, Version=3.5.0.0, Culture=neutral, PublicKeyToken=B77A5C561934E089"/>
            </assemblies>
        </compilation>

        <authentication mode="Windows"/>

        <pages>
            <controls>
                <add tagPrefix="asp" namespace="System.Web.UI" assembly="System.Web.Extensions, Version=3.5.0.0, Culture=neutral, PublicKeyToken=31BF3856AD364E35"/>
                <add tagPrefix="asp" namespace="System.Web.UI.WebControls" assembly="System.Web.Extensions, Version=3.5.0.0, Culture=neutral, PublicKeyToken=31BF3856AD364E35"/>
            </controls>
      <namespaces>
        <add namespace="Declaratieverwerking.WebApplication.Beheer.Controllers"/>
        <add namespace="Declaratieverwerking.WebApplication.Workspace.Controllers"/>
      </namespaces>
        </pages>
        <httpHandlers>     
            <remove verb="*" path="*.asmx"/>
            <add verb="*" path="*.asmx" validate="false" type="System.Web.Script.Services.ScriptHandlerFactory, System.Web.Extensions, Version=3.5.0.0, Culture=neutral, PublicKeyToken=31BF3856AD364E35"/>
            <add verb="*" path="*_AppService.axd" validate="false" type="System.Web.Script.Services.ScriptHandlerFactory, System.Web.Extensions, Version=3.5.0.0, Culture=neutral, PublicKeyToken=31BF3856AD364E35"/>
            <add verb="GET,HEAD" path="ScriptResource.axd" type="System.Web.Handlers.ScriptResourceHandler, System.Web.Extensions, Version=3.5.0.0, Culture=neutral, PublicKeyToken=31BF3856AD364E35" validate="false"/>
        </httpHandlers>
        <httpModules>
      <add name="Spring" type="Spring.Context.Support.WebSupportModule, Spring.Web"/>
      <add name="OpenSessionInView" type="Spring.Data.NHibernate.Support.OpenSessionInViewModule, Spring.Data.NHibernate"/>
            <add name="ScriptModule" type="System.Web.Handlers.ScriptModule, System.Web.Extensions, Version=3.5.0.0, Culture=neutral, PublicKeyToken=31BF3856AD364E35"/>
        </httpModules>
        <trust level="Full"/>
        <identity impersonate="true" password="*******" userName="Administrator"/>
    </system.web>

    <system.codedom>
        <compilers>
            <compiler language="c#;cs;csharp" extension=".cs" warningLevel="4" type="Microsoft.CSharp.CSharpCodeProvider, System, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089">
                <providerOption name="CompilerVersion" value="v3.5"/>
                <providerOption name="WarnAsError" value="false"/>
            </compiler>
        </compilers>
    </system.codedom>
    <!-- 
        The system.webServer section is required for running ASP.NET AJAX under Internet
        Information Services 7.0.  It is not necessary for previous version of IIS.
    -->
    <system.webServer>
        <validation validateIntegratedModeConfiguration="false"/>
        <modules runAllManagedModulesForAllRequests="true">
            <remove name="ScriptModule"/>
            <add name="ScriptModule" preCondition="managedHandler" type="System.Web.Handlers.ScriptModule, System.Web.Extensions, Version=3.5.0.0, Culture=neutral, PublicKeyToken=31BF3856AD364E35"/>
      <add name="Spring" type="Spring.Context.Support.WebSupportModule, Spring.Web"/>
      <add name="OpenSessionInView" type="Spring.Data.NHibernate.Support.OpenSessionInViewModule, Spring.Data.NHibernate"/>
        </modules>
        <handlers>
            <remove name="WebServiceHandlerFactory-Integrated"/>
            <remove name="ScriptHandlerFactory"/>
            <remove name="ScriptHandlerFactoryAppServices"/>
            <remove name="ScriptResource"/>
            <add name="ScriptHandlerFactory" verb="*" path="*.asmx" preCondition="integratedMode" type="System.Web.Script.Services.ScriptHandlerFactory, System.Web.Extensions, Version=3.5.0.0, Culture=neutral, PublicKeyToken=31BF3856AD364E35"/>
            <add name="ScriptHandlerFactoryAppServices" verb="*" path="*_AppService.axd" preCondition="integratedMode" type="System.Web.Script.Services.ScriptHandlerFactory, System.Web.Extensions, Version=3.5.0.0, Culture=neutral, PublicKeyToken=31BF3856AD364E35"/>
            <add name="ScriptResource" preCondition="integratedMode" verb="GET,HEAD" path="ScriptResource.axd" type="System.Web.Handlers.ScriptResourceHandler, System.Web.Extensions, Version=3.5.0.0, Culture=neutral, PublicKeyToken=31BF3856AD364E35"/>
        </handlers>
        <httpRedirect enabled="false" destination="http://www.google.nl"/>
    </system.webServer>
    <runtime>
        <assemblyBinding xmlns="urn:schemas-microsoft-com:asm.v1">
            <dependentAssembly>
                <assemblyIdentity name="System.Web.Extensions" publicKeyToken="31bf3856ad364e35"/>
                <bindingRedirect oldVersion="1.0.0.0-1.1.0.0" newVersion="3.5.0.0"/>
            </dependentAssembly>
            <dependentAssembly>
                <assemblyIdentity name="System.Web.Extensions.Design" publicKeyToken="31bf3856ad364e35"/>
                <bindingRedirect oldVersion="1.0.0.0-1.1.0.0" newVersion="3.5.0.0"/>
            </dependentAssembly>
        <dependentAssembly>
                <assemblyIdentity name="System.Web.Mvc" publicKeyToken="31BF3856AD364E35" culture="neutral"/>
                <bindingRedirect oldVersion="1.0.0.0" newVersion="2.0.0.0"/>
            </dependentAssembly> 

      <dependentAssembly>
        <assemblyIdentity name="Spring.Core" publicKeyToken="65E474D141E25E07" culture="neutral"/>
        <bindingRedirect oldVersion="0.0.0.0-1.3.0.20214" newVersion="1.3.0.20214"/>
      </dependentAssembly>
        </assemblyBinding>
    </runtime>
</configuration>

РЕДАКТИРОВАТЬ: некоторые клиентские JavaScript-код, который вызывает веб-сервис:

        var xhrGegevens = new XMLHttpRequest();
        xhrGegevens.open("POST", "http://meijberg.topicus.local/ZDFMobielWebservice.asmx/getGegevensVerzekerde", true);
        xhrGegevens.onreadystatechange = function(){

            if (xhrGegevens.readyState === 4) {

                var result = eval('(' + xhrGegevens.responseText + ')');

                //Functionality
            }

        }
        xhrGegevens.setRequestHeader("content-type", "application/json");
        var postData = '{"bsn": "999999999"}';
        xhrGegevens.send(postData);

РЕДАКТИРОВАТЬ: метод getGevensVerzekerde в веб-сервисе:

[WebMethod]
public VerzekerdeGegevens getGegevensVerzekerde(string bsn)
{
    ZorgVerzekerde verzekerde = Dao.GetVerzekerde(Convert.ToInt32(bsn));
    VerzekerdeGegevens result = new VerzekerdeGegevens();

    result.bsn = verzekerde.Bsn;
    result.geboortedatum = verzekerde.Geboortedatum.Value.ToShortDateString();
    result.geslacht = Convert.ToString(verzekerde.Geslacht);
    result.huisnummer = verzekerde.Huisnummer;
    result.naam = verzekerde.Naam;
    result.postcode = verzekerde.Postcode;
    result.voorletters = verzekerde.Voorletters;

    int i = 0;

    foreach(ZorgPolisInstantie polisInstantie in verzekerde.PolisInstanties)
    {
        PolisGegevens gegevens = new PolisGegevens();

        gegevens.begindatum = polisInstantie.Begindatum.ToShortDateString();
        gegevens.einddatum = polisInstantie.Einddatum.Value.ToShortDateString();
        if(polisInstantie.Type == (ZorgPolisInstantie.ZorgPolisType) 1)
        {
            gegevens.eigenrisico = polisInstantie.EigenRisico;
        }
        else { gegevens.eigenrisico = 0; }

        gegevens.polisnummer = Convert.ToString(polisInstantie.PolisNummer);
        gegevens.type = (int) polisInstantie.Type;
        result.polisgegevens.Add(gegevens);     
    }
    return result;
}

Кто-нибудь, кто знает, в чем может быть проблема?

Ответы [ 2 ]

1 голос
/ 20 ноября 2009

Спустя почти 2 дня я обнаружил проблему .... Сканер вирусов на компьютере веб-службы (AVG Anti-Virus) блокировал все мои JSON-запросы к веб-службе .... ARGGHHHHH !!!

Кев, спасибо за старания :)

0 голосов
/ 19 ноября 2009

Вам не хватает следующих атрибутов в методах вашего веб-сервиса?:

[WebMethod]
[ScriptMethod(ResponseFormat = ResponseFormat.Json)]

Также, что происходит, когда вы используете относительный URL, то есть:

xhrGegevens.open("POST", "ZDFMobielWebservice.asmx/getGegevensVerzekerde", true);
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...