2008-12-12 6 views
1

J'avais l'habitude d'utiliser les services Web .ASMX, mais j'essaie de passer à WCF parce que c'est la dernière nouveauté, et elle est censée être meilleure.Comment accéder à la collection Application [] à partir d'un service Web WCF

Quoi qu'il en soit, ce que je veux faire est vraiment très simple: créer un webservice qui vide la collection d'applications en appelant Application.Clear(). Dans un service Web ASMX, c'est vraiment très simple, car les services Web .ASMX ont un accès complet à la collection Application []. Cependant, cela ne fonctionne pas vraiment dans WCF.

Alors, voici mon contrat de service:

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

Voici ma classe implémentant:

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

Et voici mon fichier .svc:

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

Tout compile bien. Toutefois, lorsque j'appelle mon service Web, FlushApplicationCache() renvoie une exception NullReferenceException, car Application [] est null.

Existe-t-il un moyen d'accéder à la collection Application [] à partir d'un service Web WCF? Ou dois-je revenir à .ASMX?

Répondre

0

Même si WCF peut s'exécuter dans le même AppDomain que ASP.Net, il ne passe pas par le pipeline ASP.Net complet. En tant que tel, le HttpContext n'est pas défini et vous ne pouvez pas accéder à l'application. Les services WCF ont été séparés d'ASP.Net en prévision d'être hébergés dans le WAS Server 2008.

Questions connexes