Export (0) Print
Expand All

FtpWebRequest::BeginGetRequestStream Method

Begins asynchronously opening a request's content stream for writing.

Namespace:  System.Net
Assembly:  System (in System.dll)

[HostProtectionAttribute(SecurityAction::LinkDemand, ExternalThreading = true)]
public:
virtual IAsyncResult^ BeginGetRequestStream(
	AsyncCallback^ callback, 
	Object^ state
) override

Parameters

callback
Type: System::AsyncCallback

An AsyncCallback delegate that references the method to invoke when the operation is complete.

state
Type: System::Object

A user-defined object that contains information about the operation. This object is passed to the callback delegate when the operation completes.

Return Value

Type: System::IAsyncResult
An IAsyncResult instance that indicates the status of the operation.

ExceptionCondition
InvalidOperationException

A previous call to this method or GetRequestStream has not yet completed.

WebException

A connection to the FTP server could not be established.

ProtocolViolationException

The Method property is not set to UploadFile.

You must complete the asynchronous operation by calling the EndGetRequestStream method. Typically, EndGetRequestStream is called by the method referenced by callback. To determine the state of the operation, check the properties in the IAsyncResult object returned by this method.

This method does not block while waiting for the stream. To block, call GetRequestStream in place of this method.

For detailed information about using the asynchronous programming model, see Calling Synchronous Methods Asynchronously.

NoteNote

This member outputs trace information when you enable network tracing in your application. For more information, see Network Tracing in the .NET Framework.

NoteNote

The HostProtectionAttribute attribute applied to this type or member has the following Resources property value: ExternalThreading. The HostProtectionAttribute does not affect desktop applications (which are typically started by double-clicking an icon, typing a command, or entering a URL in a browser). For more information, see the HostProtectionAttribute class or SQL Server Programming and Host Protection Attributes.

Notes to Callers

This method generates network traffic.

The following code example demonstrates beginning an asynchronous operation to get a request's stream. This code example is part of a larger example provided for the FtpWebRequest class overview.

// Command line arguments are two strings: 
// 1. The url that is the name of the file being uploaded to the server. 
// 2. The name of the file on the local machine. 
// 
static void Main()
{
   array<String^>^args = Environment::GetCommandLineArgs();

   // Create a Uri instance with the specified URI string. 
   // If the URI is not correctly formed, the Uri constructor 
   // will throw an exception.
   ManualResetEvent^ waitObject;
   Uri^ target = gcnew Uri( args[ 1 ] );
   String^ fileName = args[ 2 ];
   FtpState^ state = gcnew FtpState;
   FtpWebRequest ^ request = dynamic_cast<FtpWebRequest^>(WebRequest::Create( target ));
   request->Method = WebRequestMethods::Ftp::UploadFile;

   // This example uses anonymous logon. 
   // The request is anonymous by default; the credential does not have to be specified.  
   // The example specifies the credential only to 
   // control how actions are logged on the server.
   request->Credentials = gcnew NetworkCredential( "anonymous","janeDoe@contoso.com" );

   // Store the request in the object that we pass into the 
   // asynchronous operations.
   state->Request = request;
   state->FileName = fileName;

   // Get the event to wait on.
   waitObject = state->OperationComplete;

   // Asynchronously get the stream for the file contents.
   request->BeginGetRequestStream( gcnew AsyncCallback( EndGetStreamCallback ), state );

   // Block the current thread until all operations are complete.
   waitObject->WaitOne();

   // The operations either completed or threw an exception. 
   if ( state->OperationException != nullptr )
   {
      throw state->OperationException;
   }
   else
   {
      Console::WriteLine( "The operation completed - {0}", state->StatusDescription );
   }
}

.NET Framework

Supported in: 4.5, 4, 3.5, 3.0, 2.0

.NET Framework Client Profile

Supported in: 4, 3.5 SP1

Windows 8.1, Windows Server 2012 R2, Windows 8, Windows Server 2012, Windows 7, Windows Vista SP2, Windows Server 2008 (Server Core Role not supported), Windows Server 2008 R2 (Server Core Role supported with SP1 or later; Itanium not supported)

The .NET Framework does not support all versions of every platform. For a list of the supported versions, see .NET Framework System Requirements.

Show:
© 2014 Microsoft