在MVC中启用Ajax的WCF返回404

时间:2014-02-12 21:01:55

标签: c# jquery ajax asp.net-mvc wcf

我正在尝试向我的MVC项目添加一个WCF服务,以便有一个普通的地方放置我的ajax方法但是当我尝试通过浏览到url来调用它的'方法时(例如../Service.svc/ HelloWorld)或用jquery ajax调用它我改为404页面。

如果我在webforms项目中做同样的事情,它的工作没有任何问题。我在这做错了什么?这不是保持ajax方法的最佳实践场所吗?就像我说的:我想要一个通用的地方来保存我的ajax方法,这些方法可以从几个视图中重用,所以我不想把它们放在视图的控制器中,如果可能的话

我的代码:

[AspNetCompatibilityRequirements(RequirementsMode = AspNetCompatibilityRequirementsMode.Allowed)]
public class Service1:IService1
{
    public string HelloWorld()
    {
        return "HelloWorld";
    }
}
[ServiceContract]
public interface IService1
{
    [OperationContract]
    [WebGet]
    string HelloWorld();
}

我的配置:

<system.serviceModel>
    <services>
        <service name="WebApplication1.Service1">
            <endpoint address=""
                      behaviorConfiguration="AJAXEndpoint"
                      binding="webHttpBinding"
                      contract="WebApplication1.IService1" />
        </service>
    </services>
    <behaviors>
        <endpointBehaviors>
            <behavior name="AJAXEndpoint">
                <webHttp />
                <enableWebScript />
            </behavior>
        </endpointBehaviors>
        <serviceBehaviors>
            <behavior>
                <serviceMetadata httpGetEnabled="true" />
                <serviceDebug includeExceptionDetailInFaults="true" />
            </behavior>
        </serviceBehaviors>
    </behaviors>
    <serviceHostingEnvironment multipleSiteBindingsEnabled="true" minFreeMemoryPercentageToActivateService="1" />
</system.serviceModel>

1 个答案:

答案 0 :(得分:0)

您必须在Global.asax中添加ServiceRoute。你有一个404只是因为没有这个请求的路由。

例如,这可能是

routes.Add(new ServiceRoute("ThePath", new WebServiceHostFactory(), typeof(YourService)));

+1 for asp.net Web Api:这绝对是在asp.net中构建web api的推荐方式,特别是在现有的mvc项目中。