Вопрос был опубликован некоторое время назад, но я предполагаю, что все еще есть люди, заинтересованные в использовании WCF Data Services в проектах ASP.NET MVC.
Предполагая, что в вашем проекте есть служба с именем: '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)));
}
}
}
Убедитесь, что в Web.config имеется следующая конфигурация:
<configuration>
...
<system.serviceModel>
<serviceHostingEnvironment aspNetCompatibilityEnabled="true" />
</system.serviceModel>
...
</configuration>
Теперь вы можете проверить, что все работает нормально, запустив ваш проект в браузере и используя следующий URL:
http://localhost:port_number/DataSourceService/$metadata
... который должен вернуть ваши метаданные.