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 サービスを呼び出すと、Application[] が null であるため、FlushApplicationCache() は NullReferenceException をスローします。

WCF Web サービスから Application[] コレクションにアクセスする方法はありますか? または、.ASMX に戻す必要がありますか?

4

1 に答える 1

0

WCFはASP.Netと同じAppDomainで実行できますが、完全なASP.Netパイプラインを通過しません。そのため、HttpContextが設定されておらず、アプリケーションにアクセスできません。WCFサービスは、Server 2008のWASでホストされることを見越して、ASP.Netから分離されました。

于 2008-12-16T14:15:18.573 に答える