2011-04-20 9 views
5

Występuję i potrzebuję szybkiej ręki. Google mnie zawiódł. Pracuję nad zastąpieniem zestawu startowego WCF/REST z ASP.NET MVC. Chcę, aby przejście jako bezbolesne, jak to możliwe, staram się stworzyć trasę pasujące następujący adres URL:Problem z programem ASP.NET MVC 2 - kropka na trasie

http://localhost/services/MyService.svc/UserInfo 

stworzyłem trasę w Global.asax.cs:

routes.MapRoute(
      "MyServiceDefault", 
      "services/MyService.svc/{action}/{id}", 
      new { 
        controller = "MyService", 
        action = "UserInfo", 
        id = UrlParameter.Optional 
       } 
     ); 

Wkrótce zdałem sobie sprawę z tego, że żądanie nie składa się nawet do mojej aplikacji z powodu części adresu URL.

Czego mi brakuje, aby wymusić przekazanie wniosku do mojej aplikacji, a nie być obsługiwanym przez serwer jako zasób statyczny?

Aktualizacja

Zapomniałam wspomnieć, że Próbowałem również dodanie następujących do Web.config bezskutecznie:

<httpRuntime relaxedUrlToFileSystemMapping="true" /> 

Odpowiedz

5

Okazuje się, że poszukiwanie prawidłowej kombinacji terminów ostatecznie przyniesie wyniki. Phil Haack faktycznie ma blok post o dokładnym tej kwestii:

Overriding a .svc Request With Routing

Okazuje się, że po rozszerzeniu * .svc, po prostu dodając <httpRuntime relaxedUrlToFileSystemMapping="true" /> do Web.config nie wystarczy.

W jednym z plików Web.config ramek znajduje się dostawca kompilacji skojarzony z * .svc, który przejmuje żądanie, zanim dotrze do .NET MVC (i kończy się niepowodzeniem, ponieważ nie jest to tak naprawdę usługa WCF) . Gdy już się o tym dowiesz, wystarczy usunąć dostawcę budowania w aplikacji Web.config:

<system.web> 
    <compilation debug="true" targetFramework="4.0"> 
    <buildProviders> 
     <remove extension=".svc"/>    
    </buildProviders> 
    ... 
</system.web> 
+0

interesujące. Zanotuję to. –

0

Spójrz na posesji RouteCollection.RouteExistingFiles. Domyślnie jest to ustawione na false. Może to oznaczać, że twoja usługa znajduje się w ścieżce Usługi w twoim projekcie i to jest przyczyną problemu.

+0

Mimo że nie mam folderu usług, mimo to zrobiłem to. Brak szczęścia. Moja aplikacja nadal nie radzi sobie z trasą. –

0

Ten article mówi, w jaki sposób można używać różnych rozszerzeń z aplikacją mvc asp.net, a mimo to przekierowywać je do platformy .NET. Zwróć szczególną uwagę na część zaczynającą się od

This is done using a script named registermvc.wsf. 
Powiązane problemy