簡體   English   中英

需要有關ASP.NET(3.5)ScriptManager的幫助,以通過AJAX調用WCF JSON數據

[英]Need Help with ASP.NET (3.5) ScriptManager to call WCF JSON Data via AJAX

我正在嘗試使ASP.NET(框架3.5),AJAX和JSON正常工作。 我有兩個問題。 首先是,當我按ASP.NET的要求添加以下標記時:

[AspNetCompatibilityRequirements(RequirementsMode = 
      AspNetCompatibilityRequirementsMode.Allowed)]

我發現我不能將其添加到接口聲明上方,只能添加一個類。 我希望此代碼成為接口。 有人可以告訴我我做錯了嗎? 錯誤如下:

屬性AspNetCompatibilityRequirements在此聲明類型上無效。 它僅對“類”聲明有效。

    [ServiceContract(Namespace = "API.Trade")]
    [AspNetCompatibilityRequirements(RequirementsMode = 
        AspNetCompatibilityRequirementsMode.Allowed)]
    public interface ITradeService
    {
        [OperationContract(Name = "GetAllCategories")]
        string GetCategories(string itemtype, string keywordstring);

        [OperationContract(Name = "GetCategoryByNodeLevel")]
        string GetCategories(int NodeLevel); 

        [OperationContract]
        int GetTrades(string KeywordString, string TradeType);
    }

第二個問題是在ASPX ScriptManager標記中:

 <asp:ScriptManager ID="ScriptManager1" runat="server">
 <Services>
 <asp:ServiceReference Path="?" />
 </Services>
 </asp:ScriptManager>

我注意到Path =屬性應該指向一個.SVC文件。 到目前為止,我已經成功地使用了WCF類庫來完成我所需要的。 類庫具有Trade.cs,TradeService.cs和ITradeService.cs文件,我可以對其進行編譯,然后將其作為Web項目中的Web服務引用。

那么,“ Path =“應該指向什么? 或者,我需要添加什么?

我正在學習中,感謝您的耐心配合。 提前致謝。

關於第一個問題。 該屬性被定義為僅適用於類,因此您不能在其他任何東西上聲明它。

該路徑應指向您的服務正在偵聽的端點(例如,/ services / myserivce)。

該路徑應該是HTTP服務的服務端點: http://host.example.com/tradeservice.svc/method : http://host.example.com/tradeservice.svc/method

您只能將屬性應用於接口(類)的實現,而不能應用於接口本身。

至於第二個答案。 我認為路徑需要指向實際的Web服務終結點(.svc或舊的終結點。很抱歉,我忘了頂一下)。

您可以做的是創建一個WebService,TradeService.svc,並實現ITradeService接口。 作為服務上的私有變量,創建一個TradeService實例,並將其用作代理...就像這樣

private TradeService _proxy;

public string MyMethod(){
    _proxy.MyMethod();
}

有道理。

  • AspNetCompatibilityRequirementsAttribute.RequirementsMode不是必需的屬性,可用於以編程方式設置托管模式,也可以使用serviceHostingEnvironment標記在webconfig中執行相同的操作:
<system.serviceModel> 
    <serviceHostingEnvironment ..>
    </serviceHostingEnvironment>
    </system.serviceModel>

參考: http : //msdn.microsoft.com/zh-cn/library/system.servicemodel.activation.aspnetcompatibilityrequirements屬性.requirementsmode(v = vs.110).aspx

  • 您應該通過手動添加TradeService.svc在項目中添加服務主機(.svc)。 您也可以通過添加新項目> WCF服務來執行相同操作,但這將覆蓋服務CS文件。 添加了svc文件后,您可以添加以下行:
<%@ ServiceHost Language="C#" Debug="true" Service="TradeService" Factory="System.ServiceModel.Activation.WebScriptServiceHostFactory" %>

請注意, WebScriptServiceHostFactory將自動將ASP.NET Ajax端點添加到您的服務中。 最后,將您的“路徑”屬性指向這個新創建的“ TradeService.svc”。

您可以通過訪問http://localhost.me/TradeService.svc來測試您的服務

可以在http://localhost.me/TradeService.svc/jsdebug中測試Ajax支持

參考: http : //berniecook.wordpress.com/2012/01/08/consumption-a-wcf-service-with-jquery-or-scriptmanager/

源代碼: https ://docs.google.com/open ? id = 0Bz2usIBCcor0NDQxZDc2ODYtNTUzMi00OTRlLTlhOGMtMGI4Y2RhNGIzYWNj

暫無
暫無

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

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