[英]the content type 'application/json; charset=utf-8' was not the expected type 'text/xml; charset=utf-8'
When using firebug, I got this wired error "NetworkError: 415 Cannot process the ...xt/xml; charset=utf-8'. - http://localhost:59899/wsccc1/wscccService.svc/RunTts
" in my asp.net mvc 4 project. 当使用firebug时,我得到了这个有线错误“NetworkError:415无法处理... xt / xml; charset = utf-8'。 -
http://localhost:59899/wsccc1/wscccService.svc/RunTts
”在我的asp中.net mvc 4项目。
The code: 编码:
<script lang="javascript" type="text/javascript">
function ttsFunction() {
serviceUrl = "http://localhost:59899/wsccc1/wscccService.svc/RunTts";
var data = new Object();
data.text = $('#speak').val();
var jsonString = JSON.stringify(data);
$.ajax({
type: 'POST',
url: serviceUrl,
data: jsonString,
contentType: 'application/json; charset=utf-8',
dataType: 'json',
success: function() { alert('ok')},
error: function (xhr,status,error) {
console.log("Status: " + status);
console.log("Error: " + error);
console.log("xhr: " + xhr.readyState);
},
statusCode: {
404: function() {
console.log('page not found');
}
}
});
}
</script>
The service code: 服务代码:
[AspNetCompatibilityRequirements(RequirementsMode = AspNetCompatibilityRequirementsMode.Allowed)]
[ServiceBehavior(IncludeExceptionDetailInFaults = true)]
public class wservice:Iwservice
{
public string RunTts(string value)
{
return value.ToUpper();
}
}
The interface is: 界面是:
namespace service
{
[ServiceContract]
public interface Iwservice
{
[OperationContract]
[WebInvoke(Method = "POST", RequestFormat = WebMessageFormat.Json, ResponseFormat = WebMessageFormat.Json, BodyStyle = WebMessageBodyStyle.Wrapped, UriTemplate = "RunTts")]
string RunTts(string text);
}
}
And web config, I used file-less in WCF.: 和web配置,我在WCF中使用无文件:
<?xml version="1.0"?>
<configuration>
<system.web>
<compilation debug="true" targetFramework="4.5"/>
<httpRuntime targetFramework="4.5"/>
</system.web>
<system.serviceModel>
<serviceHostingEnvironment >
<serviceActivations>
<add factory="System.ServiceModel.Activation.ServiceHostFactory"
relativeAddress="./wsccc1/wscccService.svc"
service="service.wservice"/>
</serviceActivations>
</serviceHostingEnvironment>
<behaviors>
<serviceBehaviors>
<behavior>
<serviceMetadata httpGetEnabled="true"/>
</behavior>
</serviceBehaviors>
</behaviors>
</system.serviceModel>
</configuration>
You need to use the WebServiceHostFactory
, instead of the regular ServiceHostFactory
in your code. 您需要使用
WebServiceHostFactory
,而不是代码中的常规ServiceHostFactory
。 That will configure the endpoint with the appropriate binding ( webHttpBinding
) and behavior ( webHttp
) to honor the [WebInvoke]
attribute. 这将使用适当的绑定(
webHttpBinding
)和行为( webHttp
)配置端点以遵守[WebInvoke]
属性。
<serviceHostingEnvironment >
<serviceActivations>
<add factory="System.ServiceModel.Activation.WebServiceHostFactory"
relativeAddress="./wsccc1/wscccService.svc"
service="service.wservice"/>
</serviceActivations>
</serviceHostingEnvironment>
转到web.config端点标记并检查bindingConfiguration
是否正确存在,并确保地址拼写正确。
<endpoint address="/YourName".../>
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.