通过AJAX Javascript调用WCF服务

通过AJAX Javascript调用WCF服务,javascript,jquery,ajax,wcf,Javascript,Jquery,Ajax,Wcf,AJAX、JSON等,所以如果我在任何地方出错,请原谅,在这种情况下请随时纠正我 我的问题是: 我试图通过客户端脚本通过jQuery.ajax方法调用WCF服务,但由于某些原因,我不确定是否会出现错误500-内部服务器错误 下面提到的是我的WCF代码,其中包含ServiceContract接口、它在类中的实现、我正在使用的服务的服务主机文件和web.config设置,然后是JQuery.ajax方法的客户端脚本和页面标记。请你们中的任何人指出我做错了什么,哪里做错了 我的WCF接口: <S

AJAX、JSON等,所以如果我在任何地方出错,请原谅,在这种情况下请随时纠正我

我的问题是:

我试图通过客户端脚本通过jQuery.ajax方法调用WCF服务,但由于某些原因,我不确定是否会出现错误500-内部服务器错误

下面提到的是我的WCF代码,其中包含ServiceContract接口、它在类中的实现、我正在使用的服务的服务主机文件和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
注意:我已经在IIS上托管了该服务。另外,Staff是我创建的一个自定义类和StaffData——我试图在ajax中传递的数据是我创建的一个javascript对象,它映射到服务中的Staff对象

在过去的几个小时里,我通过几个链接试图解决我所面临的问题,但没有成功,因为我对这些概念的理解仅达到基本水平

任何帮助都将不胜感激


提前感谢。

500服务方法中的异常可能会产生内部服务器错误。您是否尝试过将您的服务契约实现方法放入try-catch块并在某个地方写入错误来检查它?或者您尝试过调试服务吗?也可以发布您的员工类实现吗?可能它没有用DataContract属性标记,或者它的一些成员没有用DataMember属性标记?我已经用DataContract和DataMember属性标记了我的Staff类,这里有一个示例代码供您参考:DataContract>Public Class Staff Private\u StaffId As Integer Public Property StaffId As Integer Get Return\u StaffId End Get Setvalue As Integer\u StaffId=value End Set End Property End End ClassI很抱歉,它的格式不正确
      <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
    <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({
            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();
            },
        });