通过AJAX Javascript调用WCF服务

时间:2014-02-10 09:43:57

标签: javascript jquery ajax wcf

AJAX,JSON等,请原谅,如果我在任何地方都错了,请在这种情况下随意纠正我。

我的问题是:

我试图通过客户端脚本编写来通过jQuery .ajax()方法调用WCF服务但是我收到错误500 - 内部服务器错误由于某种原因我不确定。

下面提到的是我的WCF代码,其中包含ServiceContract的接口,它在类中的实现,Service Host文件以及我正在使用的服务的web.config设置,后面是JQuery的客户端脚本.ajax ()方法和页面标记。请你们中的任何人指出我在哪里以及我做错了什么。

我的WCF界面:

<ServiceContract(Namespace:="Service")>
  Public Interface IPMSService
    <OperationContract()>
    <WebInvoke(Method:="POST", RequestFormat:=WebMessageFormat.Json,  BodyStyle:=WebMessageBodyStyle.WrappedRequest)>
    Function InsertNewOrUpdateStaffRecord(ByVal Staff As Staff) As Integer
  End Interface

实现ServiceContract的类:

      <AspNetCompatibilityRequirements(RequirementsMode:=AspNetCompatibilityRequirementsMode.Allowed)>
    Public Class PMSService
        Implements IPMSService

        Public Sub New()
        End Sub

        Public Function InsertNewOrUpdateStaffRecord(ByVal Staff As Staff) As Integer         Implements IPMSService.InsertNewOrUpdateStaffRecord
            Return New StaffManager().InsertNewOrUpdateStaffRecord(Staff)
        End Function
    End Class

服务主机指令:

WCF的Web.Config设置:

    <system.serviceModel>
       <behaviors>
          <endpointBehaviors>
            <behavior name="Service.NewServiceAspNetAjaxBehavior">
              <enableWebScript />
              <webHttp />
              <dataContractSerializer maxItemsInObjectGraph="2147483647"/>
            </behavior>
          </endpointBehaviors>
          <serviceBehaviors>
            <behavior name="MyServiceTypeBehaviors" >
              <serviceMetadata httpGetEnabled="true" />
              <serviceDebug includeExceptionDetailInFaults="true"/>
            </behavior>
          </serviceBehaviors>
        </behaviors>
        <bindings>
          <webHttpBinding>
            <binding name="defaultRestJsonp" crossDomainScriptAccessEnabled="true">
              <readerQuotas maxStringContentLength="2147483647" maxArrayLength="2147483647" maxBytesPerRead="2147483647" maxDepth="64" maxNameTableCharCount="2147483647" />
              <security mode="None" />
            </binding>
          </webHttpBinding>
        </bindings>
        <serviceHostingEnvironment minFreeMemoryPercentageToActivateService="0" aspNetCompatibilityEnabled="true" 
    multipleSiteBindingsEnabled="false" />
        <services>
          <service name="Service.PMSService" behaviorConfiguration="MyServiceTypeBehaviors">
            <endpoint address="" behaviorConfiguration="Service.NewServiceAspNetAjaxBehavior"
        binding="webHttpBinding" bindingConfiguration="defaultRestJsonp" contract="Service.IPMSService" />
          </service>
        </services>
    </system.serviceModel>

我的ajax调用的客户端代码:

    $.ajax({
            type: "POST",
            contentType: "application/json; charset=utf-8",
            url: "http://ddsdev.i-jag.local:82/Newservice.svc/InsertNewOrUpdateStaffRecord/",
            data: Staffdata,
            processData: false,
            dataType: "json",
            crossDomain: true,
            success: function (response) {
                OnSuccess();
            },
        });

注意:我在IIS上托管了该服务。 Staff也是我创建的自定义类和StaffData - 我试图在ajax中传递的数据是我创建的一个javascript对象,它映射到服务中的Staff对象。

我一直在努力解决这个过去几个小时我遇到的问题,经历了几个环节,但没有运气,因为我对这些概念的理解只达到了基本水平。

任何帮助都会非常感激。

在期待中感谢你。

0 个答案:

没有答案