.NET 4 WCF REST service 404 по некоторым запросам - PullRequest
2 голосов
/ 21 марта 2011

У меня есть служба .NET 4.0 WCF REST (для генерации и проверки ключей продуктов), которую я настроил на своем хостинге с Arvixe (через Web Deploy в Visual Studio).Локально на моем компьютере с Windows 7 он работает нормально из IIS, но на моем хостинге я получаю 404 ошибки от всех, кроме URL-адреса базовой службы.Например:

Мои методы определены как:

[WebGet(UriTemplate = "?bla={bla}&etc={etc}")]  
public Stream GetLicenseKey(string bla, string etc)

[WebGet(UriTemplate = "/validate?item={item}")]  
public Stream ValidateLicense(string item,)

Мой Global.ascx имеет:

RouteTable.Routes.Add(new ServiceRoute("", new WebServiceHostFactory(), typeof(LicensingService)));

Мой web.config - это почти стандартный шаблон, созданный мастером, но я добавил:

runAllManagedModulesForAllRequests="true"

Я попытался добавить несколько новых обработчиков в web.config для " .svc" (этот уже существует в диспетчере IIS), ". *" И "*", но ни один не помогЯ также попытался добавить baseAddressPrefixFilter с префиксом = "http://www.mydomain.com/", как это предлагалось на форумах Arvixe, но это также не имело никакого значения.

Я также включил ведение журнала WCFTrace, но пока мне не удалось получитьфайл журнала с сервера, он отображается как пустойФайл 0b, когда я загружаю его, но 280 КБ на сервере.

Я предполагаю, что это простая проблема конфигурации, но у меня закончились идеи.Я не могу понять, почему он работает нормально на моей локальной (очень простой установке) IIS, но не на моем хостинге.

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

Может кто-нибудь сказать мне, что не так, или дать мне идею, где искать дальше?

Спасибо.

Ответы [ 2 ]

1 голос
/ 29 марта 2011

Решение оказывается довольно очевидным.Я размещаю службу WCF в виртуальном каталоге, где на корневом веб-сайте установлен Wordpress.Wordpress добавляет URL Rewrites, и это мешало мне получить доступ к сервисам.Я добавил правило типа «исключение», и теперь все работает.Я был настолько увлечен конфигурацией WCF, что даже не подумал, что решил просмотреть каждую страницу настроек IIS и сравнить ее с моей локальной копией.

1 голос
/ 21 марта 2011

Проверьте это сообщение: http://pranayamr.blogspot.com/2011/03/rest.html может помочь вам легко решить вашу проблему.

Как я вижу, в этом нет необходимости

RouteTable.Routes.Add(new ServiceRoute("", new WebServiceHostFactory(), typeof(LicensingService)));

просто проверьте вышеуказанную ссылку для более подробной информации

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