2013-05-22 147 views
1

我创建了一个支持AJAX的WCF服务,我想用POST调用它。但服务是404没有找到,我不明白为什么。我看到一些例子,但无法找到为什么我的服务无法访问。我已经改变了我的网络配置,但没有什么区别。我做错了什么?呼叫WCF服务404找不到

namespace ATSite 
{ 
    [ServiceContract(Namespace = "")] 
    [AspNetCompatibilityRequirements(RequirementsMode = AspNetCompatibilityRequirementsMode.Allowed)] 
    public class SendEmailService 
    { 
     [OperationContract] 
     public string HelloWorld(string id) 
     { 
      return "Hello world " + id; 
     } 
    } 
} 

调用服务:

function helloWorld() { 
    $.ajax({ 
     type: "POST", 
     contentType: "application/json; charset=utf-8", 
     url: "../SendEmailService.svc/HelloWorld", 
     data: '{"Id": "2"}', 
     dataType: "json", 
     success: function (result) { 
      onSuccess(result); 
     }, 
     error: alert('Erro') 
    }); 
} 
function onSuccess(result) { 
    alert(result); 
} 

这是我的web.config

<system.serviceModel> 
    <behaviors> 
     <endpointBehaviors> 
     <behavior name="ATSite.SendEmailServiceAspNetAjaxBehavior"> 
      <enableWebScript /> 
     </behavior> 
     </endpointBehaviors> 
    </behaviors> 
    <serviceHostingEnvironment aspNetCompatibilityEnabled="true" 
     multipleSiteBindingsEnabled="true" /> 
    <services> 
     <service name="ATSite.SendEmailService"> 
     <endpoint address="" behaviorConfiguration="ATSite.SendEmailServiceAspNetAjaxBehavior" 
      binding="webHttpBinding" contract="ATSite.SendEmailService" /> 
     </service> 
    </services> 
    </system.serviceModel> 

谢谢!

+0

你检查../SendEmailService.svc/HelloWorld路径是正确的? – Kuzgun

+0

我有完全相同的问题,你是否设法解决这个问题?将服务移动到另一个应用程序对我来说不是一种选择,因为功能很大程度上取决于它所处的项目。 –

回答

0

的WebInvoke属性为您提供了一些选项的示例:

[WebInvoke(Method = "POST", 
     BodyStyle = WebMessageBodyStyle.WrappedRequest, 
     RequestFormat = WebMessageFormat.Json, 
     ResponseFormat = WebMessageFormat.Json)] 
    public string MyAwesomeServiceMethod(Decimal value) 
    { 
     return value.ToString("F2"); 
    }