Как получить доступ к коллекции Application [] из веб-службы WCF - PullRequest
1 голос
/ 12 декабря 2008

Раньше я пользовался веб-сервисами .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?

1 Ответ

0 голосов
/ 16 декабря 2008

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

...