Wiem, że wydaje się, że to pytanie zostało opublikowane wiele razy, ale przeczytałem prawie wszystkie (większość samouczków w Internecie), a także Wciąż nie mogę pojąć, co robię źle.Wywołanie usługi WCF programu ASP.NET 4.0 z jQuery daje 400 nieprawidłowych żądań.
Próbowałem zaimplementować na stronie internetowej rozwijamy usługę WWW WCF, która ma być używana przez skrypt jQuery, ale wciąż otrzymuję 400 Bad Request
podczas wykonywania żądania AJAX i zaczynam tracić nadzieję.
Proszę zauważyć, że jestem nowy w WCF, a sam utworzyłem się tylko dzięki tutorialom online, więc jest całkowicie możliwe, że przeoczyłem lub poważnie coś spieprzyłem.
Pytania Próbowałem, ale nie pomogło:
- WCF Service returns 400 Bad Request
- uploading large xml to WCF REST service -> 400 Bad request
- 400 Bad Request HTTP Response using a WCF POST via JQuery
- Error 400 (Bad Request) with WCF Tutorial?
- Why does my C# client, POSTing to my WCF REST service, return (400) Bad Request?
SPUB esources czytam bezskutecznie:
- http://www.west-wind.com/weblog/posts/324917.aspx
- http://www.c-sharpcorner.com/UploadFile/sridhar_subra/116/
- http://learningbyfailing.com/2008/05/calling-wcf-from-jquery-using-parameters/
- http://iainjmitchell.com/blog/?p=97
- Wiele innych ...
Próbowałem też stworzenie nowego rozwiązania, tylko ze stroną i usługą, aby rządzić zakłóceń, ale nadal mam ten sam problem. Tutaj można znaleźć kod:
IService.cs
namespace WebService
{
using System;
using System.ServiceModel;
using System.ServiceModel.Web;
[ServiceContract(Name = "Service", Namespace = "WebService")]
public interface IService
{
[OperationContract]
[WebInvoke(BodyStyle = WebMessageBodyStyle.Wrapped, Method = "POST", RequestFormat = WebMessageFormat.Json, ResponseFormat = WebMessageFormat.Json)]
String Test();
}
}
Service.svc.cs
namespace WebService
{
using System;
public class Service : IService
{
public String Test()
{
return "Hello, world.";
}
}
}
Default.aspx
<%@ Page Language="C#" AutoEventWireup="true" CodeBehind="Default.aspx.cs" Inherits="WebService.Default" %>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head runat="server">
<script src="http://ajax.googleapis.com/ajax/libs/jquery/1.5.2/jquery.min.js" type="text/javascript"></script>
<script type="text/javascript">
$(document).ready(function() {
$("#doAjax").click(function (event) {
event.preventDefault();
jQuery.ajax({
contentType: "application/json"
, dataType: "text"
, error: function (jqXHR, textStatus, errorThrown) {
console.group("AJAX error:");
console.debug(jqXHR);
console.debug(textStatus);
console.groupEnd();
}
, processData: false
, success: function (data, textStatus, jqXHR) {
console.group("AJAX success:");
console.debug(data);
console.debug(textStatus);
console.debug(jqXHR);
console.groupEnd();
}
, type: "post"
, url: "/Service.svc/Test"
});
});
});
</script>
<title>WebService</title>
</head>
<body>
<form runat="server">
<h1><%= this.Page.Title %></h1>
<p><input id="doAjax" type="button" value="Run" /></p>
</form>
</body>
</html>
Web.config
<?xml version="1.0" encoding="utf-8"?>
<configuration>
<system.web>
<compilation debug="true" targetFramework="4.0" />
</system.web>
<system.serviceModel>
<bindings />
<client />
<behaviors>
<endpointBehaviors>
<behavior name="Behavior">
<webHttp />
</behavior>
</endpointBehaviors>
<serviceBehaviors>
<behavior name="">
<serviceMetadata httpGetEnabled="true" />
<serviceDebug includeExceptionDetailInFaults="false" />
</behavior>
</serviceBehaviors>
</behaviors>
<serviceHostingEnvironment multipleSiteBindingsEnabled="true" />
<services>
<service name="Service">
<endpoint behaviorConfiguration="Behavior" binding="webHttpBinding" contract="WebService.IService" />
</service>
</services>
</system.serviceModel>
</configuration>
Czy znalazłeś odpowiedź na to pytanie? Mam ten sam problem i nie mogę znaleźć rozwiązania ... :( –
@NaveedButt nie, a ja od czasu przeniesienia się do innych projektów. Wypróbuj poniższe odpowiedzi, a jeśli możesz to zrobić, opublikuj odpowiedź/komentarz aby inni wiedzieli, co robić: – Albireo
Jestem w stanie zobaczyć więcej szczegółów na temat błędu, wstawiając div na stronę i ustawiając jego html na jqXHR w przypadku błędu, w wyniku czego otrzymuję lepszą wydajność. opublikuje rozwiązanie tutaj, gdy znajdę jeden IA. –