В моем проекте ASP.NET есть служба OData WCF, которую я использую для чтения и обновления базы данных SQL-Server.
Для одной из таблиц первичным ключом является поле DateTime. При попытке получить доступ к определенным строкам через службу OData, URI выглядит так: "http://server/odataservice/stats(datetime'2009-12-12T00:00:00')".
При попытке обновить эту таблицу через службу или перейти к ней, она выдает только ошибку. Ошибка отправляется до того, как служба WCF когда-либо обращается, и, насколько мне удалось найти, это связано с тем, что IIS не допускает двоеточия в URI, только в запросах, по соображениям безопасности (что-то о NTFS).
Фактическая ошибка IIS: «Ошибка HTTP 500.19 - Внутренняя ошибка сервера
Запрашиваемая страница не может быть доступна, потому что соответствующие данные конфигурации для страницы недействительны ", но это немного вводит в заблуждение.
Если я удаляю двоеточия и просматриваю "http://server/odataservice/stats(datetime'2009-12-12')", он работает, как и ожидалось. Однако я не знаю, как я могу это сделать с помощью клиента C #, который связан со службой OData. также чувствует себя очень взволнованным, чтобы отредактировать URI на клиенте или на сервере на лету, я бы предпочел правильное решение.
Я использую размещенный IIS, поэтому я не могу, насколько я знаю, изменить его конфигурацию, чтобы разрешить двоеточия, даже если это было возможно.