次の方法で共有


DiscoveryClientProtocol.References プロパティ

解決された探索ドキュメント内に見つかった参照のコレクション。

Public ReadOnly Property References As _
   DiscoveryClientReferenceCollection
[C#]
public DiscoveryClientReferenceCollection References {get;}
[C++]
public: __property DiscoveryClientReferenceCollection*
   get_References();
[JScript]
public function get References() :
   DiscoveryClientReferenceCollection;

プロパティ値

探索された参照の DiscoveryClientReferenceCollection

解説

References コレクションは、 DiscoverDiscoverAnyResolveAllResolveOneLevel の各メソッドの呼び出し時に作成されます。 Discover メソッドおよび DiscoverAny メソッドを呼び出すと、指定した URL が有効な探索ドキュメントであった場合は、このドキュメントが、探索ドキュメント内で見つかった参照と共に References コレクションに追加されます。 Discover メソッドおよび DiscoverAny メソッドの呼び出し時に追加される参照は、必ずしも有効な探索ドキュメントではありません。 ResolveAll および ResolveOneLevel の呼び出し時に、 References コレクション内の参照が有効な探索ドキュメントかどうかが検証されます。その参照が有効であり、さらに参照を含んでいる場合は、これらの参照も References コレクションに追加されます。

使用例

[Visual Basic, C#] XML Web サービス探索時に探索された References プロパティ内の参照に関する詳細を DataGrid に読み込む Web フォームのコード例を次に示します。 PopulateGrid メソッドは、 DiscoverAny の呼び出し時に見つかった参照を DataGrid に設定します。

 
<%@ Page Language="VB" Debug="true" %>

<%@ Import Namespace="System.IO" %>
<%@ Import Namespace="System.Web.Services.Discovery" %>
<%@ Import Namespace="System.Net" %>
<%@ Import Namespace="System.Data" %>

<HTML>
<HEAD>
   <SCRIPT RUNAT="SERVER">

   Public Sub Discover_Click(Source As Object, e as EventArgs )
      ' Specify the URL to discover.
      Dim sourceUrl as String = DiscoURL.Text

      Dim client as DiscoveryClientProtocol = new DiscoveryClientProtocol()
      ' Use default credentials to access the URL being discovered.
      client.Credentials = CredentialCache.DefaultCredentials
      Try 
           Dim doc As DiscoveryDocument
        ' Discover the URL for any discoverable documents. 
        doc = client.DiscoverAny(sourceUrl)

       Catch e2 As Exception
             DiscoveryResultsGrid.Columns.Clear()
          Status.Text = e2.Message
       End Try

       ' If the discovered document contained references, display them in a data grid.
       If (client.References.Count > 0) Then
            'populate our Grid with the discovery results
        PopulateGrid(client)
       End If

  End Sub

  Public Sub PopulateGrid(client As DiscoveryClientProtocol) 
    Dim dt As DataTable = new DataTable()
    Dim dr AS DataRow 
 
    dt.Columns.Add(new DataColumn("Reference") )
    dt.Columns.Add(new DataColumn("Type") )

    Dim entry As DictionaryEntry
     
    ' Iterate over the references in the discovered document, displaying their type.
    For Each entry in client.References
       dr = dt.NewRow()
       dr(0) = entry.Key
       dr(1) = entry.Value.GetType()
       dt.Rows.Add(dr)
    Next     
        
    Dim dv As DataView = new DataView(dt)
    DiscoveryResultsGrid.DataSource = dv
    DiscoveryResultsGrid.DataBind()
  End Sub
  </SCRIPT>
  </HEAD> 
  <BODY>
    <H3> <p align="center"> Discovery Class Sample </p> </H3>
        <FORM RUNAT="SERVER">

    <hr>    
        Enter the URL to discover:
        <asp:textbox id=DiscoURL Columns=60 runat="SERVER" /><p>

    <p align="center"> <asp:Button id=Discover Text="Discover!" onClick="Discover_Click" runat="SERVER"/> </p><p>

        <hr>
        <asp:label id="Status" runat="SERVER" /><p>
     <asp:DataGrid id="DiscoveryResultsGrid"
           BorderColor="black"
           BorderWidth="1"
           CellPadding="3"
           AutoGenerateColumns="true"
           runat="server">

         <HeaderStyle BackColor="DarkBlue" ForeColor="White">
         </HeaderStyle>

         <AlternatingItemStyle BackColor="LightYellow">
         </AlternatingItemStyle>

     </asp:DataGrid>
        </FORM>
  </BODY>

[C#] 
<%@ Page Language="C#" Debug="true" %>

<%@ Import Namespace="System.Web.Services.Discovery" %>
<%@ Import Namespace="System.IO" %>
<%@ Import Namespace="System.Net" %>
<%@ Import Namespace="System.Data" %>

<HTML>
<HEAD>
   <SCRIPT RUNAT="SERVER">
   protected void Discover_Click(object Source, EventArgs e)
   {
    // Specify the URL to discover.
    string sourceUrl = DiscoURL.Text;

        DiscoveryClientProtocol client = new DiscoveryClientProtocol();
    // Use default credentials to access the URL being discovered.
        client.Credentials = CredentialCache.DefaultCredentials;

        try 
        {
             DiscoveryDocument doc;
          
          // Discover the URL for any discoverable documents. 
      doc = client.DiscoverAny(sourceUrl);
        }
        catch ( Exception e2) 
        {
          DiscoveryResultsGrid.Columns.Clear();
          Status.Text = e2.Message;
        }
    // If the discovered document contained, references display them in a data grid.
        if (client.References.Count > 0)
        PopulateGrid(client);
   }

      protected void PopulateGrid(DiscoveryClientProtocol client) 
      {
         DataTable dt = new DataTable();
         DataRow dr;
 
         dt.Columns.Add(new DataColumn("Reference") );
         dt.Columns.Add(new DataColumn("Type") );

     // Iterate over the references in the discovered document, displaying their type.
         foreach (DictionaryEntry entry in client.References) 
         {
                dr = dt.NewRow();
          dr[0] = (string) entry.Key;
        dr[1] = entry.Value.GetType();
        dt.Rows.Add(dr);
         }
        DataView dv = new DataView(dt);
    DiscoveryResultsGrid.DataSource = (ICollection) dv;
    DiscoveryResultsGrid.DataBind();
      
    }
  </SCRIPT>
  </HEAD> 
  <BODY>
    <H3> <p align="center"> Discovery Class Sample </p> </H3>
        <FORM RUNAT="SERVER">
    <hr>    
     Enter the URL to discover:
        <asp:textbox id=DiscoURL Columns=60 runat="SERVER" /><p>

    <p align="center"> <asp:Button id=Discover Text="Discover!" onClick="Discover_Click" runat="SERVER"/> </p><p>

        <hr>
        <asp:label id="Status" runat="SERVER" /><p>
     <asp:DataGrid id="DiscoveryResultsGrid"
           BorderColor="black"
           BorderWidth="1"
           CellPadding="3"
           AutoGenerateColumns="true"
           runat="server">

         <HeaderStyle BackColor="DarkBlue" ForeColor="White">
         </HeaderStyle>

         <AlternatingItemStyle BackColor="LightYellow">
         </AlternatingItemStyle>

     </asp:DataGrid>
        </FORM>
  </BODY>

[C++, JScript] C++ および JScript のサンプルはありません。Visual Basic および C# のサンプルを表示するには、このページの左上隅にある言語のフィルタ ボタン 言語のフィルタ をクリックします。

必要条件

プラットフォーム: Windows 98, Windows NT 4.0, Windows Millennium Edition, Windows 2000, Windows XP Home Edition, Windows XP Professional, Windows Server 2003 ファミリ

参照

DiscoveryClientProtocol クラス | DiscoveryClientProtocol メンバ | System.Web.Services.Discovery 名前空間