我有一个WCF服务(可以说TestService.svc坐在MVC应用程序的一个区域的服务目录中,这个区域被组合到主应用程序中,这个区域称为内容.
路线已经设置,该区域工作正常.要访问Home控制器上的Index操作,我可以执行以下操作之一:
HTTP://我的主机/区域/内容/索引/家
要么
HTTP://我的主机/内容/索引/家
然而,SVC文件只能通过以下方式访问:
HTTP://my-host/areas/content/services/TestService.svc
URL必须包含区域目录,我无法通过http://my-host/content/services/TestService.svc直接访问它.如果我尝试我给错误404.
有没有办法设置应用程序,以便通过与控制器相同的路由表路由SVC请求?我不想使用区域的服务.
解决方法
如果您有自由使用.Net 4.0,您可能需要考虑通过
ServiceRoute而不是通过.svc文件使WCF服务可用.
这将使您能够避免使用TestService.svc.cs代码的TestService.svc文件.在您的Global.asax.cs中,您将具有以下内容:
public static void RegisterRoutes(RouteCollection routes,IUnityContainer container) { ... other MVC route mapping .... routes.Add(new ServiceRoute("TestService",new ServiceHostFactory(),typeof(LoaEvents))); }
然后可以通过http:// my-host / TestService访问您的服务.
您可能可以将“TestService”参数更改为“/ content / services / TestService”或更适合您需要的功能.