首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >内容类型'application/json;charset=utf-8‘不是预期的类型'text/xml;charset=utf-8’

内容类型'application/json;charset=utf-8‘不是预期的类型'text/xml;charset=utf-8’
EN

Stack Overflow用户
提问于 2013-07-09 02:59:47
回答 2查看 37.3K关注 0票数 7

当使用firebug时,我在我的asp.net MVC4项目中得到了这个有线错误"NetworkError: 415无法处理...xt/xml;charset=utf-8'. - http://localhost:59899/wsccc1/wscccService.svc/RunTts“。

代码:

代码语言:javascript
复制
<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>

服务代码:

代码语言:javascript
复制
 [AspNetCompatibilityRequirements(RequirementsMode = AspNetCompatibilityRequirementsMode.Allowed)]
[ServiceBehavior(IncludeExceptionDetailInFaults = true)]
public class wservice:Iwservice
{
    public string RunTts(string value)
    {
        return value.ToUpper();
    }
}

界面为:

代码语言:javascript
复制
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);
     }
}

和web配置,我在WCF中使用了无文件。

代码语言:javascript
复制
<?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> 
EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2013-07-09 04:00:00

您需要在代码中使用WebServiceHostFactory,而不是常规的ServiceHostFactory。这将为端点配置适当的绑定(webHttpBinding)和行为(webHttp),以支持[WebInvoke]属性。

代码语言:javascript
复制
<serviceHostingEnvironment >
   <serviceActivations>
     <add factory="System.ServiceModel.Activation.WebServiceHostFactory"
          relativeAddress="./wsccc1/wscccService.svc" 
          service="service.wservice"/>
  </serviceActivations>
</serviceHostingEnvironment>
票数 11
EN

Stack Overflow用户

发布于 2014-10-07 20:54:39

转到您的web.config端点标记,检查bindingConfiguration是否正确存在,并确保地址拼写正确。

代码语言:javascript
复制
<endpoint address="/YourName".../>
票数 4
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/17534010

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档