C# 如何在ASP.NETMVC3应用程序中托管WCF数据服务

C# 如何在ASP.NETMVC3应用程序中托管WCF数据服务,c#,asp.net-mvc,asp.net-mvc-3,wcf-data-services,C#,Asp.net Mvc,Asp.net Mvc 3,Wcf Data Services,我已经编写了几个WCF数据服务,发现它们非常有用。然而,我发现路由是相当痛苦的。我看到过一些对话,表明您可以在ASP.NETMVC应用程序中托管数据服务(我一直使用ASP.NETWeb站点)。然而,我似乎找不到任何例子来说明如何做到这一点。有人有我可以查阅的参考资料或建议吗?WCF web api可以满足您的需要。这是他们的。您将服务托管在MVC应用程序中,甚至可以连接到MVC使用的相同路由。这个问题是在不久前发布的,但我认为仍然有人对在ASP.NET MVC项目中使用WCF数据服务感兴趣 假设

我已经编写了几个WCF数据服务,发现它们非常有用。然而,我发现路由是相当痛苦的。我看到过一些对话,表明您可以在ASP.NETMVC应用程序中托管数据服务(我一直使用ASP.NETWeb站点)。然而,我似乎找不到任何例子来说明如何做到这一点。有人有我可以查阅的参考资料或建议吗?

WCF web api可以满足您的需要。这是他们的。您将服务托管在MVC应用程序中,甚至可以连接到MVC使用的相同路由。

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

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

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)));

        }
    }
}
使用System.Data.Services;
使用System.ServiceModel.Activation;
使用System.Web.Mvc;
使用System.Web.Routing;
名称空间
{
公共类路由图
{
公共静态无效注册表项(路由收集路由)
{
routes.IgnoreRoute(“{resource}.axd/{*pathInfo}”);
routes.MapRoute(
名称:“默认”,
url:“{controller}/{action}/{id}”,
默认值:新建{controller=“Home”,action=“Index”,id=UrlParameter.Optional},
//控制器不应包含“数据源服务”
约束:新建{controller=“^((?!(DataSourceService)))*$”}
);
添加(新ServiceRoute(“DataSourceService”,新DataServiceHostFactory(),typeof(DataSourceService)));
}
}
}
确保您在Web.config中具有以下配置:

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

...
...
现在,您可以通过在浏览器中运行项目并使用以下url检查一切是否正常工作:

http://localhost:port_number/DataSourceService/$metadata


。。。它应该返回您的元数据。

问题是关于WCF数据服务的,它的工作方式与基于SOAP的WCF服务不同。我不确定你的回答是否适用于他们的问题。谢谢你的建议。不幸的是,根据我的判断,@M.是正确的。这不适用于数据服务。