DiscoveryReference Class

 

The base class for discoverable references using XML Web services discovery.

Namespace:   System.Web.Services.Discovery
Assembly:  System.Web.Services (in System.Web.Services.dll)


public ref class DiscoveryReference abstract 

NameDescription
System_CAPS_protmethodDiscoveryReference()

Initializes a new instance of the DiscoveryReference class.

NameDescription
System_CAPS_pubpropertyClientProtocol

Gets or sets the instance of DiscoveryClientProtocol used in a discovery process.

System_CAPS_pubpropertyDefaultFilename

Gets the name of the default file to use when saving the referenced discovery document, XSD schema, or Service Description.

System_CAPS_pubpropertyUrl

Gets or sets the URL of the referenced document.

NameDescription
System_CAPS_pubmethodEquals(Object^)

Determines whether the specified object is equal to the current object.(Inherited from Object.)

System_CAPS_pubmethodSystem_CAPS_staticFilenameFromUrl(String^)

Returns a file name based on the passed URL.

System_CAPS_protmethodFinalize()

Allows an object to try to free resources and perform other cleanup operations before it is reclaimed by garbage collection.(Inherited from Object.)

System_CAPS_pubmethodGetHashCode()

Serves as the default hash function. (Inherited from Object.)

System_CAPS_pubmethodGetType()

Gets the Type of the current instance.(Inherited from Object.)

System_CAPS_protmethodMemberwiseClone()

Creates a shallow copy of the current Object.(Inherited from Object.)

System_CAPS_pubmethodReadDocument(Stream^)

Reads the passed Stream and returns an instance of the class representing the type of referenced document.

System_CAPS_pubmethodResolve()

Downloads the referenced document at Url to resolve whether the referenced document is valid.

System_CAPS_protmethodResolve(String^, Stream^)

Resolves whether the referenced document is valid.

System_CAPS_pubmethodToString()

Returns a string that represents the current object.(Inherited from Object.)

System_CAPS_pubmethodWriteDocument(Object^, Stream^)

When overridden in a derived class, writes the document to a Stream.

ContractReference, SchemaReference, and DiscoveryDocumentReference all inherit from DiscoveryReference, and represent the three types of documents discoverable through XML Web services discovery: Service Descriptions, XML Schema Definition (XSD) schemas, and discovery documents, respectively.

#using <System.Xml.dll>
#using <System.Web.Services.dll>
#using <System.dll>

using namespace System;
using namespace System::IO;
using namespace System::Web::Services::Discovery;
using namespace System::Net;

// Class derived from DiscoveryReference class and overriding it members.
ref class MyDiscoveryReferenceClass: public DiscoveryReference
{
private:
   String^ myDocumentUrl;

public:
   property String^ DefaultFilename 
   {
      virtual String^ get() override
      {
         return "dataservice.disco";
      }
   }

   virtual Object^ ReadDocument( Stream^ stream ) override
   {
      return stream;
   }

   void Resolve()
   {
      try
      {
         DiscoveryDocument^ myDiscoveryRefDocument;
         myDiscoveryRefDocument = DiscoveryReference::ClientProtocol->Discover( Url );
      }
      catch ( Exception^ e ) 
      {
         throw e;
      }
   }

protected:
   virtual void Resolve( String^ /*contentType*/, Stream^ /*stream*/ ) override {}

public:
   property String^ Url 
   {
      virtual String^ get() override
      {
         return myDocumentUrl;
      }

      virtual void set( String^ value ) override
      {
         myDocumentUrl = value;
      }
   }

   virtual void WriteDocument( Object^ document, System::IO::Stream^ stream ) override
   {
      DiscoveryDocument^ myDiscoveryDocument = dynamic_cast<DiscoveryDocument^>(document);
      myDiscoveryDocument->Write( stream );
   }
};

int main()
{
   try
   {
      DiscoveryDocument^ myDiscoveryDocument;
      StreamReader^ myStreamReader = gcnew StreamReader( "c:\\Inetpub\\wwwroot\\dataservice.disco" );
      FileStream^ myStream = gcnew FileStream( "c:\\MyDiscovery.disco",FileMode::OpenOrCreate );
      Console::WriteLine( "Demonstrating DiscoveryReference class." );

      // Read discovery file.
      myDiscoveryDocument = DiscoveryDocument::Read( myStreamReader );

      // Create a new instance of the DiscoveryReference class.
      MyDiscoveryReferenceClass^ myDiscoveryReference;
      myDiscoveryReference = gcnew MyDiscoveryReferenceClass;
      DiscoveryClientProtocol^ myDiscoveryClientProtocol = gcnew DiscoveryClientProtocol;
      myDiscoveryClientProtocol->Credentials = CredentialCache::DefaultCredentials;

      // Set the client protocol.
      myDiscoveryReference->ClientProtocol = myDiscoveryClientProtocol;

      // Read the default file name.
      Console::WriteLine( "Default file name is: {0}", myDiscoveryReference->DefaultFilename );

      // Write the document.
      myDiscoveryReference->WriteDocument( myDiscoveryDocument, myStream );

      // Read the document.
      myDiscoveryReference->ReadDocument( myStream );

      // Set the URL.
      myDiscoveryReference->Url = "http://localhost/dataservice.disco";
      Console::WriteLine( "Url is: {0}", myDiscoveryReference->Url );

      // Resolve the URL.
      myDiscoveryReference->Resolve();
      myStreamReader->Close();
      myStream->Close();
   }
   catch ( Exception^ e ) 
   {
      Console::WriteLine( "Exception caught! - {0}", e->Message );
   }
}

.NET Framework
Available since 1.1

Any public static ( Shared in Visual Basic) members of this type are thread safe. Any instance members are not guaranteed to be thread safe.

Return to top
Show: