2011-12-30 3 views
2

Я написал несколько служб данных WCF и нашел их весьма полезными. Тем не менее, я обнаружил, что маршрутизация представляет собой большую боль. Я видел разговоры, которые показывают, что вы можете разместить службу данных в приложении ASP.Net MVC (я всегда использовал веб-сайты ASP.Net). Однако, похоже, я не могу найти примеров того, как этого добиться. Есть ли у кого-нибудь какие-либо ссылки, которые я могу проверить или посоветовать?Как разместить службу данных WCF в приложении ASP.Net MVC3

ответ

0

Веб-сайт WCF может делать то, что вы ищете. Вот их getting started page. Вы размещаете службу внутри приложения MVC и даже подключаетесь к той же маршрутизации, что и MVC.

+3

Вопрос в частности о службах передачи данных WCF, который работает иначе, чем службы WCF на основе SOAP. Я не уверен, что ваш ответ относится к их вопросу. –

+0

Спасибо за совет. К сожалению, из того, что я могу определить, @M. верно. это не работает для служб данных. – RockyMountainHigh

2

Вопрос был опубликован некоторое время назад, но я предполагаю, что по-прежнему люди заинтересованы в использовании служб данных WCF в проектах 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/$ метаданные

... которые должны возвращать ваши метаданные.

Смежные вопросы