如何在ASP.Net MVC3应用程序中托管WCF数据服务

时间:2011-12-30 18:25:22

标签: c# asp.net-mvc asp.net-mvc-3 wcf-data-services

我编写了几个WCF数据服务并发现它们非常有用。但是,我发现路由非常痛苦。我见过的对话表明你可以在ASP.Net MVC应用程序中托管数据服务(我一直使用ASP.Net网站)。但是,我似乎无法找到任何如何实现这一目标的例子。有没有人有我可以退房或建议的参考资料?

2 个答案:

答案 0 :(得分:2)

这个问题是在不久前发布的,但我认为仍然有人对在ASP.NET MVC项目中使用WCF数据服务感兴趣。

假设您的项目中有一个名为“DataSourceService.svc”的服务,您可以通过在“RouteConfig.cs”中配置路由来在MVC项目中使用此服务,如下所示:

using System.Data.Services;
using System.ServiceModel.Activation;
using System.Web.Mvc;
using System.Web.Routing;

namespace <YourNamespace>
{
    public class RouteConfig
    {
        public static void RegisterRoutes(RouteCollection routes)
        {
            routes.IgnoreRoute("{resource}.axd/{*pathInfo}");

            routes.MapRoute(
                name: "Default",
                url: "{controller}/{action}/{id}",
                defaults: new { controller = "Home", action = "Index", id = UrlParameter.Optional },
                // the controller should NOT contain "DataSourceService"
                constraints: new { controller = "^((?!(DataSourceService)).)*$" }
            );

            routes.Add(new ServiceRoute("DataSourceService", new DataServiceHostFactory(), typeof(DataSourceService)));

        }
    }
}

确保您在Web.config中具有以下配置:

<configuration>
  ...
  <system.serviceModel>
    <serviceHostingEnvironment aspNetCompatibilityEnabled="true" />
  </system.serviceModel>
  ...
</configuration>

现在,您可以通过在浏览器中运行项目并使用以下URL来检查一切正常:

的http://本地主机:端口号/ DataSourceService / $元数据

...应返回您的元数据。

答案 1 :(得分:0)

WCF网络API可能会满足您的需求。这是他们的getting started page。您在MVC应用程序内托管服务,甚至连接到MVC使用的相同路由。