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