我正在尝试向我的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>
答案 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项目中。