Как получить доступ к коллекции Application [] из веб-службы WCF

Раньше я использовал веб-сервисы .ASMX, но я пытаюсь перейти на WCF, потому что это самая последняя новинка, и она должна быть лучше.

В любом случае, то, что я хочу сделать, действительно очень просто: создать веб-сервис, который очищает коллекцию Application, вызывая Application.Clear (). В веб-службе ASMX это действительно очень просто, поскольку веб-службы .ASMX имеют полный доступ к коллекции Application []. Тем не менее, это действительно не работает в WCF.

Итак, вот мой сервисный контракт:

[ServiceContract]
public interface IFlusherServicePage
{
    [OperationContract]
    void FlushApplicationCache();
}

Вот мой класс реализации:

public class FlusherServicePage : Page, IFlusherServicePage
{
    public void FlushApplicationCache()
    {
        Application.Clear();
    }
}

А вот мой файл .svc:

<%@ ServiceHost Language="C#" Debug="true" Service="FlusherServicePage" CodeBehind="~/App_Code/FlusherServicePage.cs" %>

Все хорошо компилируется. Однако когда я вызываю свой веб-сервис, FlushApplicationCache () генерирует исключение NullReferenceException, поскольку Application [] имеет значение null.

Есть ли способ получить доступ к коллекции Application [] из веб-службы WCF? Или мне нужно вернуться к .ASMX?

12.12.2008 18:21:27
1 ОТВЕТ
РЕШЕНИЕ

Хотя WCF может работать в том же AppDomain, что и ASP.Net, он не проходит через весь конвейер ASP.Net. Таким образом, HttpContext не установлен, и вы не можете получить доступ к приложению. Службы WCF были отделены от ASP.Net в ожидании размещения в WAS Server 2008.

0
16.12.2008 14:15:18