WCF AJAX 无法推断架构。 Request/Response body 被换行
WCF AJAX Cannot infer schema. The Request/Response body is wrapped
我正在努力通过 WCF Web 服务将 Web 表单连接到 SSIS。我的问题最初是 cross-referencing 服务的问题,现在已成为服务的问题,如标题所示出现错误。
这是我的代码:
//Service
[ServiceContract]
public interface IExtractionService
{
[OperationContract]
[WebInvoke(Method = "POST",
RequestFormat = WebMessageFormat.Json,
ResponseFormat = WebMessageFormat.Json,
BodyStyle = WebMessageBodyStyle.Wrapped,
UriTemplate = "/SubmitExtraction")]
string runExtraction(string start, string end, string packageName);
}
public string runExtraction(string start, string end, string packageName)
{
//code to run SSIS package
}
//Javascript
$("#btnSubmit").click(function () {
var startDateTime = ($("#from").data + " 00:00:00");
var endDateTime = ($("#to").data + " 23:59:59");
var ExtractionData = {
"start": startDateTime,
"end": endDateTime,
"packageName": $("#packageName").data
};
$.ajax({
type: "POST",
url: "ExtractionService.svc/runExtraction",
data: JSON.stringify(ExtractionData),
contentType: "application/json; charset=utf-8",
dataType: "json",
processData: true,
success: function (data, status) {
alert("success..." + data);
},
error: function () {
alert("Failed");
}
})
})
//Global.asax.cs
protected void Application_BeginRequest(object sender, EventArgs e)
{
HttpContext.Current.Response.AddHeader("Access-Control-Allow-Origin", "*");
if(HttpContext.Current.Request.HttpMethod == "OPTIONS")
{
HttpContext.Current.Response.AddHeader("Access-Control-Allow-Methods", "GET, POST");
HttpContext.Current.Response.AddHeader("Access-Control-Allow-Headers", "Content-Type, Accept");
HttpContext.Current.Response.AddHeader("Access-Control-Max-Age", "1728000" );
HttpContext.Current.Response.End();
}
}
//web.config
<system.serviceModel>
<bindings>
<basicHttpBinding>
<binding name="BasicHttpBinding_IExtractionService" />
</basicHttpBinding>
</bindings>
<standardEndpoints>
<webHttpEndpoint>
<standardEndpoint name="" helpEnabled="true" automaticFormatSelectionEnabled="true"></standardEndpoint>
</webHttpEndpoint>
</standardEndpoints>
<client>
<endpoint address="http://localhost:49313/ExtractionService.svc"
binding="basicHttpBinding" bindingConfiguration="BasicHttpBinding_IExtractionService"
contract="ExtractionServices.IExtractionService" name="BasicHttpBinding_IExtractionService" />
</client>
<behaviors>
<serviceBehaviors>
<behavior name="">
<serviceMetadata httpGetEnabled="true" httpsGetEnabled="true" />
<serviceDebug includeExceptionDetailInFaults="false" />
</behavior>
</serviceBehaviors>
</behaviors>
<serviceHostingEnvironment aspNetCompatibilityEnabled="true"
multipleSiteBindingsEnabled="true" />
</system.serviceModel>
这就是您所需要的。如果还有什么,我可以提出来。我觉得这是一件小事。我一直在一点一点地把所有这些放在一起,我知道它看起来很不稳定,但我觉得大部分都处于工作状态。感谢任何帮助。
在我访问 url 的 ajax 调用中,我输入了如下方法名称:
$.ajax({
type: "POST",
url: "ExtractionService.svc/runExtraction",
data: JSON.stringify(ExtractionData),
contentType: "application/json; charset=utf-8",
dataType: "json",
该服务有一个指定的 uri,直到第二眼我才在脑海中点击,当我更改 url 以匹配 uri 而不是方法名称时,如下所示:
$.ajax({
type: "POST",
url: "ExtractionService.svc/SubmitExtraction",
data: JSON.stringify(ExtractionData),
contentType: "application/json; charset=utf-8",
dataType: "json",
我正在努力通过 WCF Web 服务将 Web 表单连接到 SSIS。我的问题最初是 cross-referencing 服务的问题,现在已成为服务的问题,如标题所示出现错误。
这是我的代码:
//Service
[ServiceContract]
public interface IExtractionService
{
[OperationContract]
[WebInvoke(Method = "POST",
RequestFormat = WebMessageFormat.Json,
ResponseFormat = WebMessageFormat.Json,
BodyStyle = WebMessageBodyStyle.Wrapped,
UriTemplate = "/SubmitExtraction")]
string runExtraction(string start, string end, string packageName);
}
public string runExtraction(string start, string end, string packageName)
{
//code to run SSIS package
}
//Javascript
$("#btnSubmit").click(function () {
var startDateTime = ($("#from").data + " 00:00:00");
var endDateTime = ($("#to").data + " 23:59:59");
var ExtractionData = {
"start": startDateTime,
"end": endDateTime,
"packageName": $("#packageName").data
};
$.ajax({
type: "POST",
url: "ExtractionService.svc/runExtraction",
data: JSON.stringify(ExtractionData),
contentType: "application/json; charset=utf-8",
dataType: "json",
processData: true,
success: function (data, status) {
alert("success..." + data);
},
error: function () {
alert("Failed");
}
})
})
//Global.asax.cs
protected void Application_BeginRequest(object sender, EventArgs e)
{
HttpContext.Current.Response.AddHeader("Access-Control-Allow-Origin", "*");
if(HttpContext.Current.Request.HttpMethod == "OPTIONS")
{
HttpContext.Current.Response.AddHeader("Access-Control-Allow-Methods", "GET, POST");
HttpContext.Current.Response.AddHeader("Access-Control-Allow-Headers", "Content-Type, Accept");
HttpContext.Current.Response.AddHeader("Access-Control-Max-Age", "1728000" );
HttpContext.Current.Response.End();
}
}
//web.config
<system.serviceModel>
<bindings>
<basicHttpBinding>
<binding name="BasicHttpBinding_IExtractionService" />
</basicHttpBinding>
</bindings>
<standardEndpoints>
<webHttpEndpoint>
<standardEndpoint name="" helpEnabled="true" automaticFormatSelectionEnabled="true"></standardEndpoint>
</webHttpEndpoint>
</standardEndpoints>
<client>
<endpoint address="http://localhost:49313/ExtractionService.svc"
binding="basicHttpBinding" bindingConfiguration="BasicHttpBinding_IExtractionService"
contract="ExtractionServices.IExtractionService" name="BasicHttpBinding_IExtractionService" />
</client>
<behaviors>
<serviceBehaviors>
<behavior name="">
<serviceMetadata httpGetEnabled="true" httpsGetEnabled="true" />
<serviceDebug includeExceptionDetailInFaults="false" />
</behavior>
</serviceBehaviors>
</behaviors>
<serviceHostingEnvironment aspNetCompatibilityEnabled="true"
multipleSiteBindingsEnabled="true" />
</system.serviceModel>
这就是您所需要的。如果还有什么,我可以提出来。我觉得这是一件小事。我一直在一点一点地把所有这些放在一起,我知道它看起来很不稳定,但我觉得大部分都处于工作状态。感谢任何帮助。
在我访问 url 的 ajax 调用中,我输入了如下方法名称:
$.ajax({
type: "POST",
url: "ExtractionService.svc/runExtraction",
data: JSON.stringify(ExtractionData),
contentType: "application/json; charset=utf-8",
dataType: "json",
该服务有一个指定的 uri,直到第二眼我才在脑海中点击,当我更改 url 以匹配 uri 而不是方法名称时,如下所示:
$.ajax({
type: "POST",
url: "ExtractionService.svc/SubmitExtraction",
data: JSON.stringify(ExtractionData),
contentType: "application/json; charset=utf-8",
dataType: "json",