0

我正在尝试让 ASP.NET (Framework 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=”应该指向什么?或者,我需要添加什么?

我边走边学,感谢您的耐心。提前致谢。

4

4 回答 4

0

关于第一个问题。该属性被定义为仅适用于一个类,因此您不能在其他任何东西上声明它。

该路径应指向您的服务正在侦听的端点(例如/services/myserivce)。

于 2009-07-27T17:54:07.777 回答
0

路径应该是 HTTP 服务的服务端点:http://host.example.com/tradeservice.svc/method.

您只能将该属性应用于接口(类)的实现,而不是接口本身。

于 2009-07-27T17:57:17.520 回答
0

至于你的第二个答案。我相信路径需要指向一个实际的 web 服务端点(.svc 或旧的.. 我忘记了,对不起)。

您可以做的是创建一个 WebService、TradeService.svc,并实现 ITradeService 接口。作为服务上的私有变量,创建一个 TradeService 实例,并将其用作代理......就像这样

private TradeService _proxy;

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

有道理。

于 2009-07-27T17:59:32.307 回答
0
  • AspNetCompatibilityRequirementsAttribute.RequirementsMode 不是必需属性,可用于以编程方式设置托管模式,或者您可以在 webconfig 中使用 serviceHostingEnvironment 标签执行相同操作:
    <system.serviceModel>
    <serviceHostingEnvironment ..>
    </serviceHostingEnvironment>
    </system.serviceModel>

参考: http: //msdn.microsoft.com/en-us/library/system.servicemodel.activation.aspnetcompatibilityrequirementsattribute.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/sumption-a-wcf-service-with-jquery-or-scriptmanager/

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

于 2014-05-01T21:32:37.140 回答