Как возвратить HttpContext. Текущий. Кэш от WCF?

Исключение файла клиента javadb не имеет отношения к вашей реальной проблеме. Это сообщение уровня INFO, сообщающее вам, что оно искало место по умолчанию для библиотек баз данных Apache Derby, но не нашло их. Это место по умолчанию относится только к Payara Server, а не к Payara Micro.

Фактическая проблема, которую вы видите, в вашем комментарии. Я вижу, что вы используете версию Java, которая включает JPMS (модульная система). Модульность, представленная в Java 9, не совместима с вашей версией Payara Micro, поэтому вам потребуется версия Java не выше 8.

Вы можете запустить Payara Micro на Java 9+, явно добавив модуль java.se.ee, но в 4.181 не было никаких изменений, позволяющих Payara Micro действительно корректно работать с JPMS, поэтому он почти наверняка сломался. если вы пытались развернуть какое-либо сложное приложение.


TL; DR : измените на использование Java 8, потому что Payara Micro 4.181 не будет работать на Java 9 или выше. И сообщение javadb можно игнорировать.

Примечание: Даже если вы говорите, что используете Java 1.8, трассировка стека доказывает, что это не так. Дважды проверьте вашу установку Java и обязательно используйте Java 8.

5
задан gsharp 16 June 2011 в 13:22
поделиться

3 ответа

На вашем месте я не полагался бы на то, что сервис размещается в IIS. Что, если Вы хотели разместить свой сервис WCF с некоторой другой технологией? Я думаю, что необходимо проверить memcached, который является намного более общим решением для кэширования, и он хорошо работает с.NET.

Так или иначе, если Вы действительно хотите использовать кэш IIS, используйте Систему. Сеть. HttpRuntime. Кэш вместо HttpContext. Текущий. Кэш как HttpContext не всегда доступен.

Кроме того, как сказанный крейсер, фактический тип Ваших объектов полностью не важен, пока они являются сериализуемыми (то есть, классы украшены [сериализуемый ()] атрибут). Сам кэш IIS не требует сериализуемых объектов, но WCF делает.

14
ответ дан 18 December 2019 в 13:20
поделиться

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

-2
ответ дан 18 December 2019 в 13:20
поделиться

Вы сериализуете свои объекты, чтобы транспортировать их, но нет необходимости кэшировать сериализуемые объекты.

Ваша служба вызывает вашу бизнес-логику для обработки запросов, но что остается провод должен быть не вашими бизнес-объектами, а контрактами данных вашей службы.

Оберните ваш API кэша и отделите его от HttpRuntime Cache. Как сказал DrJokepu, обращайтесь к кешу asp.net через HttpRuntime.Cache, если хотите.

2
ответ дан 18 December 2019 в 13:20
поделиться
Другие вопросы по тегам:

Похожие вопросы: