Ответ 1
Я понял, что проблема связана с открытием базы данных. Как я понял, это добавить следующее в файл servicename.svc.cs в методе InitializeService:
config.UseVerboseErrors=true;
Спасибо всем, кто пытался помочь.
Эрик
Я создал службу OData/WCF с использованием Visual Studio 2010 в Windows XP с пакетом обновления 3 (SP3) и установил все текущие исправления.
Когда я нажимаю "просмотреть в браузере", сервис открывается, и я вижу 3 таблицы из моей модели EF. Однако, когда я добавляю имя таблицы (в данном случае "Команды") в конец строки запроса, а не вижу данные из таблицы, я получаю ошибку HTTP 500. (Эта ошибка (внутренняя ошибка сервера HTTP 500) означает, что на веб-сайте, который вы посещаете, была проблема с сервером, из-за которой веб-страница не отображалась.).
Я не только следовал за примерами с 2 сайтов, но также пытался запустить пример приложения, которое мне прислал постер блога (который работает на его компьютере), и до сих пор мне не везет.
Сообщение в блоге находится в Exposing OData от Entity Framework Model
У кого-нибудь есть идея, почему это происходит и как ее решить?
<?xml version="1.0" encoding="utf-8" standalone="yes" ?>
- <service xml:base="http://localhost:1883/VistaDBCommandService.svc/" xmlns:atom="http://www.w3.org/2005/Atom" xmlns:app="http://www.w3.org/2007/app" xmlns="http://www.w3.org/2007/app">
- <workspace>
<atom:title>Default</atom:title>
- <collection href="Commands">
<atom:title>Commands</atom:title>
</collection>
- <collection href="Databases">
<atom:title>Databases</atom:title>
</collection>
- <collection href="Statuses">
<atom:title>Statuses</atom:title>
</collection>
</workspace>
</service>
Чтобы заставить это работать, у меня есть:
После всего этого я все еще получаю ту же ошибку HTTP 500 без каких-либо записей в Event Viewer.
Есть другие идеи?
Я понял, что проблема связана с открытием базы данных. Как я понял, это добавить следующее в файл servicename.svc.cs в методе InitializeService:
config.UseVerboseErrors=true;
Спасибо всем, кто пытался помочь.
Эрик
Попробуйте эти советы по отладке, чтобы увидеть фактическую ошибку: http://blogs.msdn.com/b/phaniraj/archive/2008/06/18/debugging-ado-net-data-services.aspx
config.UseVerboseErrors=true;
помог мне разобраться с проблемой. Проблема была в том, что я использовал проверку подлинности Windows для подключения к базе данных. После перехода на SQL Server Authentication все работало нормально.
500
всегда означает, что в службе было необработанное исключение. Перейдите в журнал событий Windows, чтобы узнать, что это за ошибка.
Получил аналогичный вывод с VS2013:
Решено путем обновления инфраструктуры Entity Framework.
См. ответ fooobar.com/questions/425952/....
Вы также можете активировать Failed Request Tracing для своего веб-приложения в IIS
то вы получите подробное выполнение трассировки в Xml файлах из IIS при возникновении ошибки 500
Здесь есть хорошая статья, объясняющая, как настроить Failed Request Tracing в IIS:
Использование Failed Request Tracing для отслеживания правил перезаписи
НТН Седрик
Если вы используете файл данных SQL Server Compact (например, NorthWind.sdf), вам необходимо предоставить разрешение на запись в группу IUSRS.
Пример: если вы используете NorthWind.sdf в DataDirectory, то есть YourWeb/App_Data, вам нужно предоставить права на запись в группу _IUSRS из консоли IIS или из проводника Windows.