启用了ajax的WCF服务发出从客户端到本地访问的不同结果

时间:2013-03-27 13:15:22

标签: asp.net wcf web-services c#-4.0 jquery-mobile

我正在使用启用了ajax的wcf并将其部署在iis8上。当我从localhost访问服务时显示所需的结果

  

{“GetInsuranceResult”:[{“ItemID”:6,“ItemName”:“Adam Insur(11月19日)   2012年6:11 PM)“},{”ItemID“:7,”ItemName“:”州生活(2012年11月19日   下午6:12)“},{”ItemID“:8,”ItemName“:”Jublie Ins(2012年11月19日下午2:36)   )“},{”ItemID“:10,”ItemName“:”州生活“(2013年3月5日下午3:26   )“},{”ItemID“:13,”ItemName“:”医疗保险“(2013年3月25日下午3:43   )“},{”ItemID“:14,”ItemName“:”药物(2013年3月25日下午3:44)“}}}

但是当我从客户端访问服务时(通过ip地址),结果是不同的。

  

{“GetInsuranceResult”:[{“ItemID”:7,“ItemName”:“State Life2-edit(Nov)   19 2012年6:12 PM)“},{”ItemID“:8,”ItemName“:”Jublie Insurance Com(Nov)   19 2012年2:36 PM)“},{”ItemID“:10,”ItemName“:”国家生活-3(3月5日)   2013年3:26 PM)“},{”ItemID“:14,”ItemName“:”药物“(2013年3月25日   下午3:44)“},{”ItemID“:15,”ItemName“:”test(2013年3月27日上午3:24)   )“},{”ItemID“:16,”ItemName“:”新测试(2013年3月27日上午6:31)“}}}

WCF代码

   [WebGet(BodyStyle = WebMessageBodyStyle.Wrapped, RequestFormat = WebMessageFormat.Json, ResponseFormat = WebMessageFormat.Json, UriTemplate = "Insurance?PatientID={PatientID}")]
            [OperationContract]
            GenericItemsDTO[] GetInsurance(string PatientID);

 public GenericItemsDTO[] GetInsurance(string PatientID)
        {
            InsuranceBLL insBLL = new InsuranceBLL();
            InsuranceDTO insDTO = new InsuranceDTO();
            List<GenericItemsDTO> listIns = new List<GenericItemsDTO>();
            listIns = insBLL.GetGenericItemsListByPatientID(Convert.ToInt32(PatientID));
            GenericItemsDTO[] arrayIns = listIns.ToArray();
            return arrayIns;
        }

和WCF web.config

<system.serviceModel>
    <bindings>
      <webHttpBinding>

        <binding crossDomainScriptAccessEnabled="true" maxBufferSize="2147483647" maxReceivedMessageSize="2147483647" maxBufferPoolSize="524288"
                 transferMode="Buffered">
          <readerQuotas maxDepth="32" maxStringContentLength="2147483647"
                      maxArrayLength="2147483647" maxBytesPerRead="2147483647" maxNameTableCharCount="2147483647"  />


        </binding>

      </webHttpBinding>
    </bindings>
    <standardEndpoints>
      <webScriptEndpoint>
        <standardEndpoint name="" crossDomainScriptAccessEnabled="true" />
      </webScriptEndpoint>
    </standardEndpoints>
    <services>
      <service name="PHRWCFService.Service1"  behaviorConfiguration="ServBehave">
        <!--Endpoint for SOAP-->
        <endpoint
           address="soapService"
            binding="webHttpBinding"
           behaviorConfiguration="restPoxBehavior"
            contract="PHRWCFService.IService1"/>
        <!--Endpoint for REST-->
        <endpoint
          address="XMLService"
           binding="webHttpBinding"
           behaviorConfiguration="restPoxBehavior"
           contract="PHRWCFService.IService1"/>
      </service>
    </services>
    <behaviors>

      <serviceBehaviors>
        <behavior name="ServBehave">
          <dataContractSerializer maxItemsInObjectGraph="2147483647"/>
          <serviceMetadata httpGetEnabled="true"/>
          <serviceDebug includeExceptionDetailInFaults="false"/>

        </behavior>
      </serviceBehaviors>
      <endpointBehaviors>
        <!--Behavior for the REST endpoint for Help enability-->
        <behavior name="restPoxBehavior">
          <webHttp helpEnabled="true"/>
          <dataContractSerializer maxItemsInObjectGraph="2147483647" />
        </behavior>
      </endpointBehaviors>
    </behaviors>
    <serviceHostingEnvironment aspNetCompatibilityEnabled="true" multipleSiteBindingsEnabled="true"/>

  </system.serviceModel>
  <system.webServer>
    <security>
      <requestFiltering>
        <requestLimits maxAllowedContentLength="2147483647" maxUrl="4294967295" maxQueryString="4294967295" />
      </requestFiltering>
    </security>
    <directoryBrowse enabled="true" />
    <modules runAllManagedModulesForAllRequests="true" />
    <httpProtocol>
      <customHeaders>
        <add name="Access-Control-Allow-Origin" value="*" />
        <add name="Access-Control-Allow-Headers" value="Content-Type" />
      </customHeaders>
    </httpProtocol>
  </system.webServer>

和Ajax调用

   function GetPatientInsurance() {
    var uid = checkCookie1();
    userid = uid.toString().replace(/"/g, '');
    //var userid=uid;
    "use strict";
    var wcfServiceUrl = "http://xxxxxxxxxx/PHRService/Service1.svc/XMLService/";
    $.ajax({
        url: wcfServiceUrl + "Insurance",
        data: "PatientID=" + userid + "",
        type: "GET",
        processData: false,
        contentType: "application/json",
        timeout: 10000,
        dataType: "json",
        beforeSend: function (xhr) {
            $.mobile.showPageLoadingMsg();
            xhr.setRequestHeader("Content-type", "application/x-www-form-urlencoded");

        },
        complete: function () {

            $.mobile.hidePageLoadingMsg();
        },

        success: function (data) {
            var result = data.GetInsuranceResult;
            var items = [];

            $.each(result, function (i, item) {              

                items.push('<li><a onclick=redirect(\'AddInsurance.htm?id=' + item.ItemID + '\');\>' + item.ItemName + '</a></li>');
            });
            $('#main_list').append(items.join(''));
            $('#main_list').listview('refresh');
        },
        error: function (data) {
            alert("Error");
        }
    });

}

任何人都可以告诉我为什么会出现这个问题。

感谢。

0 个答案:

没有答案