Code:
/ WCF / WCF / 3.5.30729.1 / untmp / Orcas / SP / ndp / cdf / src / WCF / ServiceModel / System / ServiceModel / Channels / StreamSecurityUpgradeAcceptorAsyncResult.cs / 1 / StreamSecurityUpgradeAcceptorAsyncResult.cs
//------------------------------------------------------------------------------ // Copyright (c) Microsoft Corporation. All rights reserved. //----------------------------------------------------------------------------- namespace System.ServiceModel.Channels { using System.IO; using System.Security.Authentication; using System.ServiceModel.Security; using System.ServiceModel.Diagnostics; abstract class StreamSecurityUpgradeAcceptorAsyncResult : TraceAsyncResult { SecurityMessageProperty remoteSecurity; Stream upgradedStream; static AsyncCallback onAuthenticateAsServer = DiagnosticUtility.ThunkAsyncCallback(new AsyncCallback(OnAuthenticateAsServer)); protected StreamSecurityUpgradeAcceptorAsyncResult(AsyncCallback callback, object state) : base(callback, state) { } public void Begin(Stream stream) { IAsyncResult result; try { result = this.OnBegin(stream, onAuthenticateAsServer); } catch (AuthenticationException exception) { throw DiagnosticUtility.ExceptionUtility.ThrowHelperError(new SecurityNegotiationException(exception.Message, exception)); } catch (IOException ioException) { throw DiagnosticUtility.ExceptionUtility.ThrowHelperError(new SecurityNegotiationException( SR.GetString(SR.NegotiationFailedIO, ioException.Message), ioException)); } if (!result.CompletedSynchronously) { return; } CompleteAuthenticateAsServer(result); base.Complete(true); } void CompleteAuthenticateAsServer(IAsyncResult result) { try { this.upgradedStream = this.OnCompleteAuthenticateAsServer(result); } catch (AuthenticationException exception) { throw DiagnosticUtility.ExceptionUtility.ThrowHelperError(new SecurityNegotiationException(exception.Message, exception)); } catch (IOException ioException) { throw DiagnosticUtility.ExceptionUtility.ThrowHelperError(new SecurityNegotiationException( SR.GetString(SR.NegotiationFailedIO, ioException.Message), ioException)); } this.remoteSecurity = this.ValidateCreateSecurity(); } public static Stream End(IAsyncResult result, out SecurityMessageProperty remoteSecurity) { StreamSecurityUpgradeAcceptorAsyncResult thisPtr = AsyncResult.End(result); remoteSecurity = thisPtr.remoteSecurity; return thisPtr.upgradedStream; } static void OnAuthenticateAsServer(IAsyncResult result) { if (result.CompletedSynchronously) { return; } StreamSecurityUpgradeAcceptorAsyncResult acceptUpgradeAsyncResult = (StreamSecurityUpgradeAcceptorAsyncResult)result.AsyncState; Exception completionException = null; try { acceptUpgradeAsyncResult.CompleteAuthenticateAsServer(result); } #pragma warning suppress 56500 // [....], transferring exception to another thread catch (Exception e) { if (DiagnosticUtility.IsFatal(e)) { throw; } completionException = e; } acceptUpgradeAsyncResult.Complete(false, completionException); } protected abstract IAsyncResult OnBegin(Stream stream, AsyncCallback callback); protected abstract Stream OnCompleteAuthenticateAsServer(IAsyncResult result); protected abstract SecurityMessageProperty ValidateCreateSecurity(); } } // File provided for Reference Use Only by Microsoft Corporation (c) 2007. // Copyright (c) Microsoft Corporation. All rights reserved.
Link Menu
This book is available now!
Buy at Amazon US or
Buy at Amazon UK
- Container.cs
- WindowPattern.cs
- FixedDocumentSequencePaginator.cs
- DebugView.cs
- HtmlTable.cs
- StringSource.cs
- PnrpPermission.cs
- HwndSourceParameters.cs
- ScriptMethodAttribute.cs
- OletxCommittableTransaction.cs
- SafeNativeMethods.cs
- DetailsViewCommandEventArgs.cs
- Bind.cs
- DecimalConstantAttribute.cs
- FileEnumerator.cs
- WSDualHttpBindingElement.cs
- FontClient.cs
- DBBindings.cs
- EncodingTable.cs
- ModelPerspective.cs
- SourceFilter.cs
- ConnectionPointCookie.cs
- UseAttributeSetsAction.cs
- LinearGradientBrush.cs
- HwndSource.cs
- TableHeaderCell.cs
- MemberPathMap.cs
- CompilerGeneratedAttribute.cs
- TextTreeRootNode.cs
- SelectionProviderWrapper.cs
- ServiceDeploymentInfo.cs
- ParallelQuery.cs
- ListDesigner.cs
- UserMapPath.cs
- VirtualizedContainerService.cs
- Paragraph.cs
- XmlAttributeAttribute.cs
- AmbientValueAttribute.cs
- ArrayTypeMismatchException.cs
- XmlSchemaElement.cs
- Tablet.cs
- ResXResourceWriter.cs
- GenericWebPart.cs
- PointAnimation.cs
- SqlUserDefinedAggregateAttribute.cs
- ImageDrawing.cs
- HostedElements.cs
- UnmanagedMarshal.cs
- DesignTimeXamlWriter.cs
- RichTextBox.cs
- AmbientLight.cs
- Models.cs
- RadioButtonList.cs
- RandomNumberGenerator.cs
- AnnotationResourceCollection.cs
- NamespaceInfo.cs
- x509utils.cs
- OleCmdHelper.cs
- EntityStoreSchemaFilterEntry.cs
- GradientStop.cs
- InstanceOwner.cs
- CatchBlock.cs
- TaskFactory.cs
- _ShellExpression.cs
- SecureEnvironment.cs
- XmlNotation.cs
- CallContext.cs
- SettingsPropertyIsReadOnlyException.cs
- ServiceSecurityAuditBehavior.cs
- TimeoutValidationAttribute.cs
- ConfigXmlReader.cs
- NullableConverter.cs
- RequestContext.cs
- DataGridGeneralPage.cs
- HtmlTernaryTree.cs
- LoadedOrUnloadedOperation.cs
- WindowsListViewItemStartMenu.cs
- SaveFileDialogDesigner.cs
- COM2ExtendedTypeConverter.cs
- SingleQueryOperator.cs
- SystemUnicastIPAddressInformation.cs
- DataBindingCollection.cs
- CompilationUnit.cs
- ResXResourceSet.cs
- QuadraticBezierSegment.cs
- BehaviorDragDropEventArgs.cs
- ClientUtils.cs
- BamlStream.cs
- CharacterHit.cs
- RadialGradientBrush.cs
- MenuItem.cs
- DependsOnAttribute.cs
- TaskFactory.cs
- TextMarkerSource.cs
- RestHandler.cs
- SingleConverter.cs
- RelationalExpressions.cs
- ActiveXContainer.cs
- Symbol.cs
- HttpCacheVary.cs