簡體   English   中英

在同一服務器上訪問WCF服務

[英]Access WCF service on same server

我有一個帶有WCF服務的.NET網站。 如何訪問服務的當前操作上下文? 一種可能的解決方法是只在應用程序內調用該服務……但這似乎草率且多余; 特別是當服務和網站是同一應用程序時。

-更新
目標是通過Silverlight和WCF創建一個通知系統。 用戶創建游戲時,需要等待玩家。 當另一個玩家決定通過游戲列表頁面(僅是標准HTML)加入游戲時,必須通知創建者有人想要玩游戲。 用戶按下“加入”游戲按鈕,服務器執行頁面回發,並與WCF服務對話。 然后WCF將消息推送到游戲創建者的silverlight界面。

現在,我可以為自己的應用程序創建Web引用,但是由於它們都位於同一服務器上,因此我希望繞過這一步驟。 同樣的應用。

我同意戴維。 如果要在不通過WCF的情況下調用服務,則只需實例化服務類即可。

另一方面,如果希望WCF服務能夠訪問HTTPContext對象並具有對Web用戶會話的完全訪問權限,則可以在服務類(而非接口)上添加AspNetCompatibilityRequirements屬性:

[AspNetCompatibilityRequirements(RequirementsMode = AspNetCompatibilityRequirementsMode.Allowed)]
public class MyService: IMyService
{
    public string DoWork(string myInput)
    {
        HTTPContext context = HTTPContext.Current;
        ...
        return myInput;
    }
}

這是好是壞,或者是緊密耦合還是其他,實際上取決於您對服務的使用和可用性。

您可以定義“當前操作上下文”嗎?

如果只想在同一項目或站點中使用該服務,則只需像其他任何類一樣實例化該服務:

public class MyWCF : IMyWCF
{
  public void DoWork()
  {
    /// do something
  }
}

別處...

IMyWcf wcf = new MyWcf();
wcf.DoWork();

在此處或在另一個應用程序中使用服務之間的區別在於,您不使用添加服務引用時生成的代理/客戶端對象。

您需要提供更多上下文和體系結構細節。 首先...確切地說,您從何處需要操作上下文? 如果您嘗試利用Web服務范圍之外的操作上下文,那么我想說的是,您在應用程序與應用程序完全不了解的基礎結構和上下文詳細信息之間創建了非常差的耦合。

同樣,您需要澄清您的問題,以便我提供更好的答案。

經過大量研究並對WCF有了更清晰的了解之后,我現在找到了答案。 我正在使用DuplexService綁定(活動會話/實例都保留在兩個客戶端/服務器上)。 無法通過標准的aspx網頁訪問Duplex會話實例。 您必須具有一個客戶端(silverlight或Windows應用程序),該客戶端可以維持與服務器的活動會話,以防服務器向客戶端推送任何消息。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM