我有一个WCF服务(假设TestService.svc
位于MVC应用中区域的services
目录中。这个区域被合并到主应用程序中。该区域被称为{{ 1}}。
路线已经设置,区域正常。要访问content
控制器上的Index
操作,我可以执行以下操作:
Home
或
http://my-host/areas/content/index/home
但SVC文件只能通过以下方式访问:
http://my-host/content/index/home
网址必须包含http://my-host/areas/content/services/TestService.svc
目录,我无法通过areas
直接访问该目录。如果我尝试,我会收到错误404.
有没有办法设置应用程序,以便它通过与控制器相同的路由表路由SVC请求?我不想将http://my-host/content/services/TestService.svc
用于服务。
答案 0 :(得分:24)
如果您可以自由使用.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"
或更符合您需求的内容。