次の方法で共有


DiscoveryClientProtocol.References プロパティ

定義

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

public:
 property System::Web::Services::Discovery::DiscoveryClientReferenceCollection ^ References { System::Web::Services::Discovery::DiscoveryClientReferenceCollection ^ get(); };
public System.Web.Services.Discovery.DiscoveryClientReferenceCollection References { get; }
member this.References : System.Web.Services.Discovery.DiscoveryClientReferenceCollection
Public ReadOnly Property References As DiscoveryClientReferenceCollection

プロパティ値

探索された参照の DiscoveryClientReferenceCollection

次のコード例は、XML Web サービスの検出中に検出された プロパティ内の参照に関する詳細を References に設定DataGridする Web フォームです。 メソッドは PopulateGridDataGrid への DiscoverAny呼び出しで見つかった参照を に格納します。

重要

この例には、ユーザー入力を受け付けるテキスト ボックスがあります。これにより、セキュリティが脆弱になる可能性があります。 既定では、ASP.NET Web ページによって、ユーザー入力にスクリプトまたは HTML 要素が含まれていないかどうかが検証されます。 詳細については、「スクリプトによる攻略の概要」を参照してください。

<%@ 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>
<%@ 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>

注釈

コレクションはReferences、および メソッドの呼び出しResolveOneLevel中に ResolveAllDiscoverDiscoverAny設定されます。 メソッドと DiscoverAny メソッドの呼び出し中にDiscover、指定された URL が有効な探索ドキュメントである場合、そのドキュメントは、探索ドキュメント内の参照と共にReferencesコレクションに追加されます。 メソッドおよび DiscoverAny メソッドへの呼び出し中にDiscover追加された参照は、必ずしも有効な探索ドキュメントではありません。 への呼び出し ResolveAll 中および ResolveOneLevel コレクション内の References 参照は、有効な探索ドキュメントとして検証されます。 それらが有効で、参照が含まれている場合は、コレクションにも追加されます References

適用対象