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对象。
我一直在努力解决这个过去几个小时我遇到的问题,经历了几个环节,但没有运气,因为我对这些概念的理解只达到了基本水平。
任何帮助都会非常感激。
在期待中感谢你。