CheckStoreFileValidityRequest.cs source code in C# .NET

Source code for the .NET framework in C#

                        

Code:

/ WCF / WCF / 3.5.30729.1 / untmp / Orcas / SP / ndp / cdf / src / WCF / infocard / Service / managed / Microsoft / InfoCards / CheckStoreFileValidityRequest.cs / 1 / CheckStoreFileValidityRequest.cs

                            //------------------------------------------------------------------------------ 
// Copyright (c) Microsoft Corporation.  All rights reserved.
//-----------------------------------------------------------------------------
namespace Microsoft.InfoCards
{ 
    using System;
    using System.Collections.Generic; 
    using System.IO; 
    using System.Xml;
    using System.Security.Cryptography; 
    using System.Xml.Schema;
    using IDT = Microsoft.InfoCards.Diagnostics.InfoCardTrace;

    // 
    // Opens a store file and checks the first element to make sure that this is
    // a valid infocard store file. 
    // 
    class CheckStoreFileValidityRequest :UIAgentRequest
    { 

        string m_filename;
        bool m_valid = true;
 

 
        public CheckStoreFileValidityRequest( IntPtr rpcHandle, Stream inArgs, Stream outArgs, ClientUIRequest parent ) 
            : base( rpcHandle, inArgs, outArgs, parent )
        { 

        }

        protected override void OnInitializeAsSystem() 
        {
            base.OnInitializeAsSystem(); 
        } 

        // 
        // Summary
        //  Read the marshalled arguments
        //
        protected override void OnMarshalInArgs() 
        {
            BinaryReader reader = new InfoCardBinaryReader( InArgs, System.Text.Encoding.Unicode ); 
            m_filename = Utility.DeserializeString( reader ); 

        } 

        //
        // Summary
        //  Read the first element of the file 
        //
        protected override void OnProcess() 
        { 

            try 
            {

                try
                { 
                    using ( FileStream file = File.OpenRead( m_filename ) )
                    { 
                        // 
                        // Use a stream that validates the xml against internally stored schemas.
                        // 
                        XmlReaderSettings settings = InfoCardSchemas.CreateDefaultReaderSettings();
                        settings.IgnoreWhitespace = false;
                        using( XmlReader reader = InfoCardSchemas.CreateReader( file, settings ) )
                        { 
                            IDT.TraceDebug( " Roaming: Check if the store file is valid" );
                            if( !reader.IsStartElement( XmlNames.WSIdentity.EncryptedStoreElement, XmlNames.WSIdentity.Namespace ) ) 
                            { 
                                m_valid = false;
                            } 

                        }

                    } 

                } 
                catch ( XmlSchemaValidationException e ) 
                {
                    throw IDT.ThrowHelperError( 
                       new ImportException( SR.GetString( SR.SchemaValidationFailed) , e ) );
                }
                catch ( UnauthorizedAccessException e )
                { 

                    throw IDT.ThrowHelperError( 
                        new ImportException( SR.GetString( SR.ImportInaccesibleFile ), e ) ); 
                }
                catch ( IOException e ) 
                {
                    throw IDT.ThrowHelperError(
                        new ImportException( SR.GetString( SR.InvalidImportFile ), e ) );
                } 
                catch ( XmlException e )
                { 
                    throw IDT.ThrowHelperError( 
                        new ImportException( SR.GetString( SR.InvalidImportFile ), e ) );
                } 
            }
            catch ( ImportException )
            {
                // 
                // Translate ImportException to the boolean value indicating an invalid file
                // 
                m_valid = false; 
            }
 

        }

        // 
        // Summary
        //   Write the boolean value to be returned 
        // 
        protected override void OnMarshalOutArgs()
        { 
            Stream stream = OutArgs;

            BinaryWriter writer = new BinaryWriter( stream );
 
            writer.Write( m_valid );
 
 
        }
 
    }

}

// File provided for Reference Use Only by Microsoft Corporation (c) 2007.
// Copyright (c) Microsoft Corporation. All rights reserved.


                        

Link Menu

Network programming in C#, Network Programming in VB.NET, Network Programming in .NET
This book is available now!
Buy at Amazon US or
Buy at Amazon UK