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