您现在的位置是:主页 > news > 眉山招聘网站建设/网络推广培训课程内容
眉山招聘网站建设/网络推广培训课程内容
admin2025/4/25 9:48:06【news】
简介眉山招聘网站建设,网络推广培训课程内容,网站开发软件 手机,中小企业信息查询系统AJAX请求WCF使用方法POST时出现此错误?使用POST POST AJAX请求WCF服务HTTP/1.1 504提琴手 - 接收失败 日期:2016年12月3日星期六20:38:19 GMT Content-Type:text/html;字符集 UTF-8 连接:关闭 缓存控制:无缓存…
AJAX请求WCF使用方法POST时出现此错误?使用POST POST AJAX请求WCF服务
HTTP/1.1 504提琴手 - 接收失败 日期:2016年12月3日星期六20:38:19 GMT Content-Type:text/html;字符集= UTF-8 连接:关闭 缓存控制:无缓存,必须-重新验证 时间戳:18:38:19.757
[提琴手] ReadResponse()失败:服务器未返回一个完整的响应这个请求。服务器返回0字节。
我越来越与来了在同一请求选项和POST方法的几个误区。
这里是我的代码:
合同
[OperationContract]
[WebInvoke(Method = "POST", BodyStyle = WebMessageBodyStyle.WrappedRequest, RequestFormat = WebMessageFormat.Json, ResponseFormat = WebMessageFormat.Json)]
DadosPF ConsultaMaisPessoaFisica(string login, string token, string cpf);
方法实现
public DadosPF ConsultaMaisPessoaFisica(string login, string token, string cpf)
{
DadosPF info = new DadosPF();
try
{
using (MailingData data = new MailingData())
{
if (!ValidarToken(login, token))
{
info.Erro = "Token inválido";
return info;
}
if (!data.ValidarAcessoServico(login, WebService.MaisPessoaFisica))
{
info.Erro = "Serviço não esta ativo para este login";
return info;
}
if (!data.ValidarConsumoServico(login, WebService.MaisPessoaFisica))
{
info.Erro = "Limite máximo de consumo excedido";
return info;
}
cpf = BaseData.OnlyNumbers(cpf);
var dadosCadastrais = data.ConsultaCadastroPF(cpf).FirstOrDefault();
if (dadosCadastrais == null)
{
info.Erro = "Nenhum registro encontrado";
return info;
}
else
{
info = new DadosPF();
info.DadosCadastrais = dadosCadastrais;
info.Enderecos = data.ConsultarEnderecosPF(dadosCadastrais.cod_pessoa_fisica);
info.Contatos = data.ConsultarContatosPF(dadosCadastrais.cod_pessoa_fisica);
info.Parentesco = data.ConsultarParentescoPF(dadosCadastrais.cod_pessoa_fisica);
info.Veiculos = data.ConsultaVeiculos(dadosCadastrais.cod_pessoa_fisica, 0);
info.Empresas = data.ConsultarEmpresasPorSocio(cpf);
data.AtualizarConsumo(login, WebService.MaisPessoaFisica);
}
}
}
catch (Exception ex)
{
Log.Logger.Error(ex.Message, ex);
throw new Exception("Falha no metodo ConsultaMaisPessoaFisica: " + ex.ToString());
}
return info;
}
的Global.asax
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", "Authorization, Origin, Content-Type, Accept, X-Requested-With");
HttpContext.Current.Response.AddHeader("Access-Control-Max-Age", "1728000");
HttpContext.Current.Response.End();
}
}
WEB.CONFIG
multipleSiteBindingsEnabled="true" />
maxArrayLength="2147483647" maxBytesPerRead="2147483647" maxNameTableCharCount="2147483647" />
name="MailingService_Endpoint" contract="WcfVisualFix.IMailingService" />
binding="webHttpBinding" contract="WcfVisualFix.ISiteService" />
AJAX调用
$("#btnConsultar").click(function() {
$.ajax({
url: "http://localhost:70/SiteService.svc/ConsultaMaisPessoaFisica",
type: "POST",
contentType: 'application/json;charset=utf-8',
data: JSON.stringify({ login: $("#txtLogin").val(), token: $("#txtToken").val(), cpf: $("#txtCPF").val() }),
dataType: "json",
success:
function (res) {
$("#txtNome").val(res.d.Nome);
},
error:
function (err) {
console.log(err);
}
});
+0
你得到了什么错误信息?你是否尝试先使用类似邮递员的东西来查看你的API是否在工作?你有没有尝试调试任何东西? –
+0
@AndreiDragotoniu我在提问上得到了错误,编辑了问题。我必须对我的代码进行很多修改才能修复先前的错误,原因是我必须删除Method属性“WebInvoke(Method =”OPTIONS“)]”“。我认为这是一种“解决方法”解决方案,可以使它适用于POST。其次,我从WebConfig中删除了自定义头,因为我是在global.asax“BeginRequest”事件上做的。但是现在,我在fiddler上得到这个错误:ReadResponse()失败:服务器没有为这个请求返回完整的响应。服务器返回0字节。 –
+0
我无法修复的其他问题是WcfTestClient上的debbugin无法正常工作。它不会从元数据中加载服务方法。 –