1

我曾经使用 .ASMX Web 服务,但我正在尝试迁移到 WCF,因为它是最新的东西,而且应该会更好。

无论如何,我想要做的非常简单:创建一个通过调用 Application.Clear() 清空 Application 集合的 Web 服务。在 ASMX Web 服务中,这真的很简单,因为 .ASMX Web 服务可以完全访问 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" %>

一切都编译得很好。但是,当我调用我的 web 服务时,FlushApplicationCache() 会抛出 NullReferenceException,因为 Application[] 为空。

有什么方法可以从 WCF 网络服务访问 Application[] 集合?还是我需要回到 .ASMX?

4

1 回答 1

0

尽管 WCF 可以在与 ASP.Net 相同的 AppDomain 中运行,但它不会通过完整的 ASP.Net 管道。因此,未设置 HttpContext,您无法访问应用程序。WCF 服务已从 ASP.Net 中分离出来,以便托管在 Server 2008 的 WAS 中。

于 2008-12-16T14:15:18.573 回答