我已经能够使用dojo xhr.get在我的.Net wcf服务中调用methodes,但是现在我需要使用xhr post将类传递给同一个wcf服务中的方法。当我使用以下内容时,参数在到达我的.Net方法时为null:
dojo xhr电话:
AirVacInspectionInsert: function (url, av) {//url is valid, av is javascript object identical to class input parameter for .Net method validated json format
xhr.post({//send data
url: url,
postData: dojo.toJson(av),
contentType: "application/json",
handleAs: "json",
load: function (result) {
var InspDataID = result.AirVacInspectionInsertResult;
},
error: function (err) { }
});
的.Net: 接口:
[OperationContract]
[WebInvoke(Method = "POST",
RequestFormat = WebMessageFormat.Json,
ResponseFormat = WebMessageFormat.Json,
BodyStyle = WebMessageBodyStyle.Wrapped,
UriTemplate = "AirVacInspectionInsert/")]
int AirVacInspectionInsert(AVInspectionData av);
.Net方法:
public int AirVacInspectionInsert(AVInspectionData av)//av is null
{
//insert new air vac inspection
int ID = 0;
//DataSet ds = DBCalls.AirVacInspectionInsert(av);
//ID = Convert.ToInt32(ds.Tables[0].Rows[0][0]);
return ID;
}
的Web.config:
<?xml version="1.0"?>
<configuration>
<system.web>
<compilation debug="true" targetFramework="4.0" />
</system.web>
<system.serviceModel>
<services>
<service name="SARIService.Service1" behaviorConfiguration="ServiceBehavior">
<endpoint address="" binding="webHttpBinding" contract="SARIService.IService1" behaviorConfiguration="web">
</endpoint>
</service>
</services>
<behaviors>
<serviceBehaviors>
<behavior name="ServiceBehavior">
<serviceMetadata httpGetEnabled="true"/>
<serviceDebug includeExceptionDetailInFaults="False"/>
</behavior>
</serviceBehaviors>
<endpointBehaviors>
<behavior name="web">
<webHttp/>
</behavior>
</endpointBehaviors>
</behaviors>
<serviceHostingEnvironment multipleSiteBindingsEnabled="true" />
</system.serviceModel>
<system.webServer>
<modules runAllManagedModulesForAllRequests="true"/>
</system.webServer>
</configuration>
有什么想法吗?我是否缺少一些参数来让服务读取发布的数据?
由于
答案 0 :(得分:0)
问题出在.Net界面上。我改变了
BodyStyle = WebMessageBodyStyle.Wrapped,
到
BodyStyle = WebMessageBodyStyle.Bare,
并且有效