C # вызов веб-службы по URL - PullRequest
       16

C # вызов веб-службы по URL

0 голосов
/ 02 ноября 2010

Я работаю над веб-приложением и хочу вызвать веб-сервис через его URL.Как я могу достичь этого?

У меня есть следующий маршрут, зарегистрированный в моем global.asax;

routes.MapRoute(
                "ServiceHandler",
                "{*path}/{*.svc}",
                new { Url = "Services/Service.svc/GetLatestTweets" }
                );

И я хочу вызвать веб-службу, в этом случае, чтобы получить последнюю версиюсообщения из твиттера по URL-адресу, аналогичному приведенному ниже;

http://www.domainname.com/Services/Service.svc/GetLatestTweets

Когда я использую зарегистрированный маршрут, как упомянуто, я получаю сообщение об ошибке со стека, добавленного ниже.* Что я должен сделать или изменить, чтобы я мог позвонить в веб-сервис по его URL?Я работаю с простым wcf-сервисом

Ответы [ 2 ]

3 голосов
/ 02 ноября 2010

Вы не можете этого достичь. Расширение .svc уже зарегистрировано с совершенно другим обработчиком, чем MVC, для обработки WCF. Если вы попытаетесь изменить его, сервис никогда не будет работать. Вам может потребоваться вызвать веб-сервис из действия вашего контроллера, который будет действовать как мост.

1 голос
/ 02 ноября 2010

Может быть, я что-то упустил, но кажется, что вы могли просто

        routes.MapRoute(
            "ServiceHandler",
            "Services/{service}.svc/{*path}",
            new { controller = "services", action = "ParseAndExecuteServiceCall" service = "TwitterService", path = "GetLatestTweets" }
            );

и проанализируйте удаленный вызов в контроллере, если он более сложный. У вас может быть только один параметр «catchall» в маршрутах, но вы можете использовать столько переменных, сколько хотите, и ограничивать / определять их с помощью реализаций IRouteConstraint или шаблонов Regex.

Кроме того, с ответом на комментарий ниже об обработчике .svc vs. .mvc - ничто не ограничивает вас от переопределения IHttpHandler. Для этого вам необходимо переопределить метод IRouteHandler in для GetHttpHandler () ... Тогда вы можете делать любую обработку, какую захотите.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...