【问题标题】:Expose WCF services that belong to an Area in MVC app at a routed path在路由路径上公开属于 MVC 应用程序中区域的 WCF 服务
【发布时间】:2011-05-02 03:23:01
【问题描述】:

我有一个 WCF 服务(假设 TestService.svc 位于 MVC 应用程序中区域的 services 目录中。该区域被合并到主应用程序中。该区域称为 content

路线已设置好,该区域运行良好。要访问 Home 控制器上的 Index 操作,我可以执行以下任一操作:

http://my-host/areas/content/index/home

http://my-host/content/index/home

但是,SVC 文件只能通过以下方式访问:

http://my-host/areas/content/services/TestService.svc

URL 必须包含areas 目录,我无法通过http://my-host/content/services/TestService.svc 直接访问它。如果我尝试,我会收到错误 404。

有没有办法设置应用程序,使其通过与控制器相同的路由表路由 SVC 请求?我不想为服务使用areas

【问题讨论】:

    标签: asp.net-mvc wcf


    【解决方案1】:

    如果您有权使用 .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" 或更适合您需要的东西。

    【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2013-03-12
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-12-30
    相关资源
    最近更新 更多