使用firebug时,我http://localhost:59899/wsccc1/wscccService.svc/RunTts在asp.net mvc 4项目中收到此有线错误“ NetworkError:415无法处理… xt / xml; charset = utf-8’– ”。
http://localhost:59899/wsccc1/wscccService.svc/RunTts
代码:
<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>
服务代码:
[AspNetCompatibilityRequirements(RequirementsMode = AspNetCompatibilityRequirementsMode.Allowed)] [ServiceBehavior(IncludeExceptionDetailInFaults = true)] public class wservice:Iwservice { public string RunTts(string value) { return value.ToUpper(); } }
该接口是:
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); } }
和网络配置,我在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>
您需要使用WebServiceHostFactory,而不是ServiceHostFactory代码中的常规。这将为端点配置适当的绑定(webHttpBinding)和行为(webHttp)以遵守该[WebInvoke]属性。
WebServiceHostFactory
ServiceHostFactory
webHttpBinding
webHttp
[WebInvoke]
<serviceHostingEnvironment > <serviceActivations> <add factory="System.ServiceModel.Activation.WebServiceHostFactory" relativeAddress="./wsccc1/wscccService.svc" service="service.wservice"/> </serviceActivations> </serviceHostingEnvironment>