Code:
/ Dotnetfx_Win7_3.5.1 / Dotnetfx_Win7_3.5.1 / 3.5.1 / DEVDIV / depot / DevDiv / releases / whidbey / NetFXspW7 / ndp / fx / src / Net / System / Net / filewebresponse.cs / 1 / filewebresponse.cs
//------------------------------------------------------------------------------ //// Copyright (c) Microsoft Corporation. All rights reserved. // //----------------------------------------------------------------------------- namespace System.Net { using System.Runtime.Serialization; using System.IO; using System.Globalization; using System.Security.Permissions; [Serializable] public class FileWebResponse : WebResponse, ISerializable, ICloseEx { const int DefaultFileStreamBufferSize = 8192; const string DefaultFileContentType = "application/octet-stream"; // fields bool m_closed; long m_contentLength; FileAccess m_fileAccess; WebHeaderCollection m_headers; Stream m_stream; Uri m_uri; // constructors internal FileWebResponse(FileWebRequest request, Uri uri, FileAccess access, bool asyncHint) { GlobalLog.Enter("FileWebResponse::FileWebResponse", "uri="+uri+", access="+access+", asyncHint="+asyncHint); try { m_fileAccess = access; if (access == FileAccess.Write) { m_stream = Stream.Null; } else { // // apparently, specifying async when the stream will be read // synchronously, or vice versa, can lead to a 10x perf hit. // While we don't know how the app will read the stream, we // use the hint from whether the app called BeginGetResponse // or GetResponse to supply the async flag to the stream ctor // m_stream = new FileWebStream(request, uri.LocalPath, FileMode.Open, FileAccess.Read, FileShare.Read, DefaultFileStreamBufferSize, asyncHint ); m_contentLength = m_stream.Length; } m_headers = new WebHeaderCollection(WebHeaderCollectionType.FileWebResponse); m_headers.AddInternal(HttpKnownHeaderNames.ContentLength, m_contentLength.ToString(NumberFormatInfo.InvariantInfo)); m_headers.AddInternal(HttpKnownHeaderNames.ContentType, DefaultFileContentType); m_uri = uri; } catch (Exception e) { Exception ex = new WebException(e.Message, e, WebExceptionStatus.ConnectFailure, null); GlobalLog.LeaveException("FileWebResponse::FileWebResponse", ex); throw ex; } catch { Exception ex = new WebException(string.Empty, new Exception(SR.GetString(SR.net_nonClsCompliantException)), WebExceptionStatus.ConnectFailure, null); GlobalLog.LeaveException("FileWebResponse::FileWebResponse", ex); throw ex; } GlobalLog.Leave("FileWebResponse::FileWebResponse"); } // // ISerializable constructor // [Obsolete("Serialization is obsoleted for this type. http://go.microsoft.com/fwlink/?linkid=14202")] protected FileWebResponse(SerializationInfo serializationInfo, StreamingContext streamingContext):base(serializationInfo, streamingContext) { m_headers = (WebHeaderCollection)serializationInfo.GetValue("headers", typeof(WebHeaderCollection)); m_uri = (Uri)serializationInfo.GetValue("uri", typeof(Uri)); m_contentLength = serializationInfo.GetInt64("contentLength"); m_fileAccess = (FileAccess )serializationInfo.GetInt32("fileAccess"); } // // ISerializable method // ///[SecurityPermission(SecurityAction.LinkDemand, Flags=SecurityPermissionFlag.SerializationFormatter, SerializationFormatter=true)] void ISerializable.GetObjectData(SerializationInfo serializationInfo, StreamingContext streamingContext) { GetObjectData(serializationInfo, streamingContext); } // // FxCop: provide some way for derived classes to access GetObjectData even if the derived class // explicitly re-inherits ISerializable. // [SecurityPermission(SecurityAction.Demand, SerializationFormatter=true)] protected override void GetObjectData(SerializationInfo serializationInfo, StreamingContext streamingContext) { serializationInfo.AddValue("headers", m_headers, typeof(WebHeaderCollection)); serializationInfo.AddValue("uri", m_uri, typeof(Uri)); serializationInfo.AddValue("contentLength", m_contentLength); serializationInfo.AddValue("fileAccess", m_fileAccess); base.GetObjectData(serializationInfo, streamingContext); } // properties public override long ContentLength { get { CheckDisposed(); return m_contentLength; } } public override string ContentType { get { CheckDisposed(); return DefaultFileContentType; } } public override WebHeaderCollection Headers { get { CheckDisposed(); return m_headers; } } public override Uri ResponseUri { get { CheckDisposed(); return m_uri; } } // methods private void CheckDisposed() { if (m_closed) { throw new ObjectDisposedException(this.GetType().FullName); } } public override void Close() { ((ICloseEx)this).CloseEx(CloseExState.Normal); } void ICloseEx.CloseEx(CloseExState closeState) { GlobalLog.Enter("FileWebResponse::Close()"); try { if (!m_closed) { m_closed = true; Stream chkStream = m_stream; if (chkStream!=null) { if (chkStream is ICloseEx) ((ICloseEx)chkStream).CloseEx(closeState); else chkStream.Close(); m_stream = null; } } } finally { GlobalLog.Leave("FileWebResponse::Close()"); } } public override Stream GetResponseStream() { GlobalLog.Enter("FileWebResponse::GetResponseStream()"); try { CheckDisposed(); } finally { GlobalLog.Leave("FileWebResponse::GetResponseStream()"); } return m_stream; } } } // File provided for Reference Use Only by Microsoft Corporation (c) 2007. //------------------------------------------------------------------------------ // // Copyright (c) Microsoft Corporation. All rights reserved. // //----------------------------------------------------------------------------- namespace System.Net { using System.Runtime.Serialization; using System.IO; using System.Globalization; using System.Security.Permissions; [Serializable] public class FileWebResponse : WebResponse, ISerializable, ICloseEx { const int DefaultFileStreamBufferSize = 8192; const string DefaultFileContentType = "application/octet-stream"; // fields bool m_closed; long m_contentLength; FileAccess m_fileAccess; WebHeaderCollection m_headers; Stream m_stream; Uri m_uri; // constructors internal FileWebResponse(FileWebRequest request, Uri uri, FileAccess access, bool asyncHint) { GlobalLog.Enter("FileWebResponse::FileWebResponse", "uri="+uri+", access="+access+", asyncHint="+asyncHint); try { m_fileAccess = access; if (access == FileAccess.Write) { m_stream = Stream.Null; } else { // // apparently, specifying async when the stream will be read // synchronously, or vice versa, can lead to a 10x perf hit. // While we don't know how the app will read the stream, we // use the hint from whether the app called BeginGetResponse // or GetResponse to supply the async flag to the stream ctor // m_stream = new FileWebStream(request, uri.LocalPath, FileMode.Open, FileAccess.Read, FileShare.Read, DefaultFileStreamBufferSize, asyncHint ); m_contentLength = m_stream.Length; } m_headers = new WebHeaderCollection(WebHeaderCollectionType.FileWebResponse); m_headers.AddInternal(HttpKnownHeaderNames.ContentLength, m_contentLength.ToString(NumberFormatInfo.InvariantInfo)); m_headers.AddInternal(HttpKnownHeaderNames.ContentType, DefaultFileContentType); m_uri = uri; } catch (Exception e) { Exception ex = new WebException(e.Message, e, WebExceptionStatus.ConnectFailure, null); GlobalLog.LeaveException("FileWebResponse::FileWebResponse", ex); throw ex; } catch { Exception ex = new WebException(string.Empty, new Exception(SR.GetString(SR.net_nonClsCompliantException)), WebExceptionStatus.ConnectFailure, null); GlobalLog.LeaveException("FileWebResponse::FileWebResponse", ex); throw ex; } GlobalLog.Leave("FileWebResponse::FileWebResponse"); } // // ISerializable constructor // [Obsolete("Serialization is obsoleted for this type. http://go.microsoft.com/fwlink/?linkid=14202")] protected FileWebResponse(SerializationInfo serializationInfo, StreamingContext streamingContext):base(serializationInfo, streamingContext) { m_headers = (WebHeaderCollection)serializationInfo.GetValue("headers", typeof(WebHeaderCollection)); m_uri = (Uri)serializationInfo.GetValue("uri", typeof(Uri)); m_contentLength = serializationInfo.GetInt64("contentLength"); m_fileAccess = (FileAccess )serializationInfo.GetInt32("fileAccess"); } // // ISerializable method // ///[SecurityPermission(SecurityAction.LinkDemand, Flags=SecurityPermissionFlag.SerializationFormatter, SerializationFormatter=true)] void ISerializable.GetObjectData(SerializationInfo serializationInfo, StreamingContext streamingContext) { GetObjectData(serializationInfo, streamingContext); } // // FxCop: provide some way for derived classes to access GetObjectData even if the derived class // explicitly re-inherits ISerializable. // [SecurityPermission(SecurityAction.Demand, SerializationFormatter=true)] protected override void GetObjectData(SerializationInfo serializationInfo, StreamingContext streamingContext) { serializationInfo.AddValue("headers", m_headers, typeof(WebHeaderCollection)); serializationInfo.AddValue("uri", m_uri, typeof(Uri)); serializationInfo.AddValue("contentLength", m_contentLength); serializationInfo.AddValue("fileAccess", m_fileAccess); base.GetObjectData(serializationInfo, streamingContext); } // properties public override long ContentLength { get { CheckDisposed(); return m_contentLength; } } public override string ContentType { get { CheckDisposed(); return DefaultFileContentType; } } public override WebHeaderCollection Headers { get { CheckDisposed(); return m_headers; } } public override Uri ResponseUri { get { CheckDisposed(); return m_uri; } } // methods private void CheckDisposed() { if (m_closed) { throw new ObjectDisposedException(this.GetType().FullName); } } public override void Close() { ((ICloseEx)this).CloseEx(CloseExState.Normal); } void ICloseEx.CloseEx(CloseExState closeState) { GlobalLog.Enter("FileWebResponse::Close()"); try { if (!m_closed) { m_closed = true; Stream chkStream = m_stream; if (chkStream!=null) { if (chkStream is ICloseEx) ((ICloseEx)chkStream).CloseEx(closeState); else chkStream.Close(); m_stream = null; } } } finally { GlobalLog.Leave("FileWebResponse::Close()"); } } public override Stream GetResponseStream() { GlobalLog.Enter("FileWebResponse::GetResponseStream()"); try { CheckDisposed(); } finally { GlobalLog.Leave("FileWebResponse::GetResponseStream()"); } return m_stream; } } } // File provided for Reference Use Only by Microsoft Corporation (c) 2007.
Link Menu
This book is available now!
Buy at Amazon US or
Buy at Amazon UK
- BindingValueChangedEventArgs.cs
- SqlClientPermission.cs
- BufferedGraphics.cs
- ZipIOZip64EndOfCentralDirectoryBlock.cs
- PerfCounterSection.cs
- TextAnchor.cs
- Point3D.cs
- XmlDataSourceNodeDescriptor.cs
- securitycriticaldataClass.cs
- SafeFileMappingHandle.cs
- InvalidComObjectException.cs
- Button.cs
- ImageAnimator.cs
- RequestTimeoutManager.cs
- DebugInfoExpression.cs
- WindowShowOrOpenTracker.cs
- TableRow.cs
- EntityDataSourceEntityTypeFilterItem.cs
- DefaultTextStore.cs
- WindowPattern.cs
- Int16.cs
- GeneralTransform3D.cs
- SQLByteStorage.cs
- DataServiceResponse.cs
- GridPatternIdentifiers.cs
- DataRowComparer.cs
- XmlElementList.cs
- EditorOptionAttribute.cs
- IgnorePropertiesAttribute.cs
- FunctionImportElement.cs
- WebPartAddingEventArgs.cs
- FullTextLine.cs
- TemplateBamlRecordReader.cs
- StorageConditionPropertyMapping.cs
- PieceDirectory.cs
- AlphabeticalEnumConverter.cs
- MetadataUtilsSmi.cs
- KeyFrames.cs
- LinkTarget.cs
- TextEditorParagraphs.cs
- MemoryStream.cs
- BinaryNegotiation.cs
- MultipleViewPattern.cs
- PolyBezierSegment.cs
- SelectorItemAutomationPeer.cs
- _BufferOffsetSize.cs
- CngUIPolicy.cs
- HttpMethodAttribute.cs
- SQLBytesStorage.cs
- AuthorizationRule.cs
- MexTcpBindingCollectionElement.cs
- GridEntry.cs
- DataRecord.cs
- Padding.cs
- DataListItem.cs
- ResourcePool.cs
- SignatureResourcePool.cs
- ObjectDataSourceWizardForm.cs
- MatrixKeyFrameCollection.cs
- ZoneIdentityPermission.cs
- SimpleType.cs
- CqlLexerHelpers.cs
- ResourceExpressionBuilder.cs
- DesignerCapabilities.cs
- EntityKeyElement.cs
- GPStream.cs
- SrgsRuleRef.cs
- TimeZone.cs
- CqlParser.cs
- XmlElementCollection.cs
- StyleXamlTreeBuilder.cs
- ScriptResourceInfo.cs
- _SslSessionsCache.cs
- CursorConverter.cs
- DrawingAttributes.cs
- ImageClickEventArgs.cs
- MenuItemStyleCollection.cs
- FileLogRecordEnumerator.cs
- EventLogPermissionEntry.cs
- FileDataSourceCache.cs
- DetailsView.cs
- MsmqBindingFilter.cs
- ExpressionVisitor.cs
- XslTransform.cs
- DesigntimeLicenseContext.cs
- CollectionsUtil.cs
- DeleteMemberBinder.cs
- RemotingException.cs
- TextDecorations.cs
- DetailsViewInsertEventArgs.cs
- SmtpFailedRecipientException.cs
- Form.cs
- PolygonHotSpot.cs
- HandleCollector.cs
- ScriptComponentDescriptor.cs
- NameSpaceExtractor.cs
- DataMemberConverter.cs
- CellLabel.cs
- OLEDB_Enum.cs
- SQLGuid.cs