C# 如何在ASP.NETMVC3应用程序中托管WCF数据服务
我已经编写了几个WCF数据服务,发现它们非常有用。然而,我发现路由是相当痛苦的。我看到过一些对话,表明您可以在ASP.NETMVC应用程序中托管数据服务(我一直使用ASP.NETWeb站点)。然而,我似乎找不到任何例子来说明如何做到这一点。有人有我可以查阅的参考资料或建议吗?WCF web api可以满足您的需要。这是他们的。您将服务托管在MVC应用程序中,甚至可以连接到MVC使用的相同路由。这个问题是在不久前发布的,但我认为仍然有人对在ASP.NET MVC项目中使用WCF数据服务感兴趣 假设您的项目中有一个名为“DataSourceService.svc”的服务,您可以在MVC项目中使用此服务,方法是在“RouteConfig.cs”中配置路由,如下所示: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数据服务感兴趣 假设
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.是正确的。这不适用于数据服务。