2013-09-19 3 views
1

Я неоднократно получаю внутреннюю ошибку сервера 500 при попытке сделать простой вызов контроллеру веб-API DNN. Я не получаю эту ошибку на моей машине разработки и не получаю ее на одном из наших серверов развертывания. Однако проблема заключается в одном из наших серверов развертывания ; и я хотел бы выяснить, почему.Ошибка сервера веб-API DNN

Рассмотрим следующий пример, упрощенно контроллер API в TheBestController.cs

namespace MyTestLibrary.Controllers 
{ 
    public class TheBestController : DnnApiController 
    { 
     [DnnAuthorize] 
     [HttpPost] 
     public HttpResponseMessage TestMe() 
     { 
      return Request.CreateResponse(HttpStatusCode.OK, "I'm working"); 
     } 

    } 
} 

С этим RouteMapper в RouteMapper.cs

using DotNetNuke.Web.Api; 

namespace MyTestLibrary 
{ 
    public class RouteMapper : IServiceRouteMapper 
    { 
     public void RegisterRoutes(IMapRoute mapRouteManager) 
     { 
      mapRouteManager.MapHttpRoute("TheBestController", "default", "{controller}/{action}", new[] { "MyTestLibrary.Controllers" }); 
     } 
    } 
} 

С следующего вызова AJAX из моего JavaScript:

$.post("DesktopModules/MyTestLibrary/API/TheBest/TestMe", function(data) { 
     alert(data); 
}); 

Я удостоверился, что все правильные разрешения установлены для приложения DNN в IIS (а также отражены те и другие другие соответствующие настройки, которые находятся на нашем сервере, который работает). Я поместил скомпилированный файл MyTestLibrary.dll в папку bin на сайте DNN и поместил файл javascript в папку Ресурсы/Shared/scripts на сайте DNN. Сайт DNN читает javascript без проблем, и я не использую модуль (и не хотел бы, потому что я хочу, чтобы весь мой код легко переносился на сайт MVC).

Я также попытался использовать тег [AllowAnonymous] на методе контроллера (безрезультатно).

Версия DNN на всех машинах - 07.01.01, а на двух серверах работает Server 2008 R2 64bit. В dev-машине работает Win 7 64 бит.

Любые идеи?

+0

Вы вошли в среду, в которой работаете, а не тот, который этого не делает? Зашел с учетной записью DNN с правами администратора? –

+0

@ChrisHammond Я зарегистрирован в DNN как хост. сервер развертывания, который имеет эту работу, я могу войти в систему как любой пользователь, а вызовы API работают просто отлично – rwisch45

+0

@ChrisHammond Когда на сайт установлен «нормальный» DNN-модуль, знаете ли вы, есть ли какие-либо специальные разрешения для проверки подлинности установить где-нибудь в базе данных или где-либо еще в каталоге сайта? – rwisch45

ответ

1

Сломать комментарии вне в ответ;)

Я видел, где IIS на Windows Server 2008 может как-то коррумпированный папку, что веб-сайт DNN использует, и это начинает вызывать проблемы с некоторыми веб-служб в DNN. Два решения, которые, как я знаю, работали в прошлом для меня.

1) Установите новый сайт в IIS и установите DNN в этой папке. или 2) Переместите DNN-файлы в другую папку на сервере, укажите существующий веб-сайт IIS в эту папку вместо оригинальной.

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

Теперь, что именно происходит в IIS и почему может быть исправлена ​​существующая папка? Нет подсказки :(

+0

# 1 работал на меня. Я ранее пробовал # 2, и это не сработало. Несмотря на то, что мы до сих пор не знаем точно, что вызвало это, проблема кажется довольно редкой (до сих пор) – rwisch45

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