WcfWebApi в Windows Azure WebRole всегда возвращает 404, но в порядке локально - PullRequest
0 голосов
/ 08 декабря 2011

Я застрял в страшной проблеме "он работает локально".

Я использовал NuGet для установки WcfWebApi в Azure WebRole.Это веб-сайт WebForms.

Global.asax.cs Application_Start вызывает RegisterRoutes ().

RegisterRoutes () содержит: RouteTable.Routes.Add(new ServiceRoute("MySvc/TheService/", new WebServiceHostFactory(), typeof(Services.TheService)));

Интерфейс службы содержит:

[OperationContract]
    [WebGet(UriTemplate = "/hello", BodyStyle = WebMessageBodyStyle.Bare)]
    string Hello();

Реализующий класс просто возвращает "привет", поэтому, если я сейчас перейду к: http://localhost:49831/MySvc/TheService/hello - я получу "привет".ОК.

Если я сейчас опубликую в Azure и попробую один и тот же URL (очевидно, с xx.cloudapp.net/ и т. Д.), Я всегда получу 404.

Я использовал WcfWebApi ранее впрошлое - но всегда в WCfWebRole.Это имеет значение?Почему это работает локально?Это должно быть что-то связанное с Azure?

Любой совет приветствуется.Спасибо.

Edit: ну, согласно предложению @ Rajesh, я запустил Get_HostedServices, в котором перечислены URL-адреса размещенных сервисов, например: https://management.core.windows.net/mysubscriptionId/services/hostedservices/the-nameOfTheApp. Не совсем уверен, куда это идет...

В полном отчаянии я добавил файл .svc в папку в моем веб-приложении, а также все (ужасные) сервисы system.serviceModel и так далее, необходимые для настройки в стиле REST.Это все работает.

Я не хочу закрывать этот вопрос, потому что на него нет ответа как такового, и мне любопытно, что произошло.Спасибо всем за ответы до сих пор.Если я найду ответ, я обновлю.

1 Ответ

0 голосов
/ 09 декабря 2011

Я подумал о вашей проблеме. Не могли бы вы попробовать запустить приложение локально с помощью IIS или IIS Express?(IIS Express не поставляется из коробки, вы должны установить его, но его проще использовать с VS)

Указанный вами URL заставляет меня думать, что VS использует либо Cassini (Visual Studio Development Server)или IIS экспресс.Имейте в виду, что Cassini не работает точно так же, как IIS, в то время как IIS Express работает.Ваша веб-роль Azure будет работать под управлением IIS, что может объяснить различные варианты поведения, с которым вы сталкиваетесь.

Кроме того, ваш URL-адрес не похож на URL-адрес эмулятора Windows Azure (домен должен выглядеть примерно как 127.0.0.1: 81 .

Я полагаю, ваш проект является проектом Windows Azure. При тестировании вы уверены, что запускаете проект Azure, а НЕ проект веб-приложения?

...