0

ASP.NET(Framework 3.5)、AJAX、およびJSONを機能させようとしています。私はそれらの線に沿って2つの質問があります。これは、ASP.NETで必要とされる以下のタグを追加する場合です。

[AspNetCompatibilityRequirements(RequirementsMode = 
      AspNetCompatibilityRequirementsMode.Allowed)]

インターフェイス宣言の上に追加することはできず、クラスのみを追加できます。このコードをインターフェースにしたい。誰かが私が間違っていることを教えてもらえますか?エラーは次のとおりです。

属性AspNetCompatibilityRequirementsは、この宣言タイプでは無効です。'class'宣言でのみ有効です。

    [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);
    }

2番目の質問は、ASPXScriptManagerタグにあります。

 <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

あなたの2番目の答えについて。パスは実際の Web サービス エンドポイント (.svc または古いエンドポイント) を指す必要があると思います。

できることは、WebService、TradeService.svc を作成し、ITadeService インターフェイスを実装することです。サービスのプライベート変数として TradeService のインスタンスを作成し、それをプロキシとして使用します...

private TradeService _proxy;

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

理にかなっている。

于 2009-07-27T17:59:32.307 に答える