gpt4 book ai didi

c# - 无法处理消息,因为内容类型 'application/json; charset=utf-8' 不是预期的类型 'text/xml; charset=utf-8'

转载 作者:可可西里 更新时间:2023-11-01 07:45:00 25 4
gpt4 key购买 nike

我在通过 ajax json 调用 WCF 服务时收到上述响应。我的调用代码是:

<script type="text/javascript">
$(document).ready(function () {
$.ajax
({
type: "POST",
contentType: "application/json; charset=utf-8",
url: "http://localhost:90/WebServices/UserService.svc/Calculate",
data: "{}",
timeout: 10000,
dataType: "json",
success: function (response) {
alert(response)
},
error: function (xhr, ajaxOptions, thrownError) {
alert(xhr.statusText);
alert(thrownError);
}
});
});
</script>

我的服务是:

[ServiceContract]
public interface IUserService
{
[OperationContract]
[WebInvoke(Method = "POST", BodyStyle = WebMessageBodyStyle.Wrapped, ResponseFormat = WebMessageFormat.Json
)]
Answer Calculate();
}

[DataContract]
public class Answer
{
[DataMember]
public string answer { get; set; }
}

我的方法是:

[AspNetCompatibilityRequirements(RequirementsMode = AspNetCompatibilityRequirementsMode.Allowed)]
[ServiceBehavior(IncludeExceptionDetailInFaults = true)]
public class UserService : IUserService
{
public Answer Calculate()
{
Answer answer = new Answer();
answer.answer="Hello World";
return answer;
}
}

我已经纠结了一段时间,我看到其他人也有同样类型的问题,我尝试了所有的建议,但仍然没有任何效果。

问题出在哪里?我该如何解决?

最佳答案

我在这里猜测是因为您没有说明您是如何定义端点的,但我很确定情况确实如此。您的端点未针对 Web 消费定义 - 它可能使用 basicHttpBinding。要通过 jQuery(或一般的其他 Web/REST 客户端)使用端点,您需要使用 WebHttpBinding 定义端点,并将 WebHttpBehavior 应用于它。

有多种方法可以正确定义端点。最简单的方法是在 .svc 文件中使用 WebServiceHostFactory:

用户服务.svc:

<%@ ServiceHost Language="C#" Debug="true" Service="YourNamespace.UserService"
Factory="System.ServiceModel.Activation.WebServiceHostFactory" %>

关于c# - 无法处理消息,因为内容类型 'application/json; charset=utf-8' 不是预期的类型 'text/xml; charset=utf-8',我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14403492/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com