Example #1
0
        /// <summary>
        /// Translate <see cref="FaultException"/> into general <see cref="Exception"/>
        /// </summary>
        /// <param name="faultException"></param>
        /// <returns></returns>
        public static Exception TranslateFaultException(FaultException <DataFault> faultException)
        {
            int errorCode = faultException.Detail.Code;

            switch (errorCode)
            {
            case DataErrorCode.DataNoPermission:
            {
                string errorMsg = SR.ResourceManager.GetString(DataErrorCode.Name(errorCode), CultureInfo.CurrentCulture);
                return(new UnauthorizedAccessException(errorMsg, faultException));
            }

            case DataErrorCode.InvalidAllowedUser:
            {
                string errorMsg = SR.ResourceManager.GetString(DataErrorCode.Name(errorCode), CultureInfo.CurrentCulture);
                return(new IdentityNotMappedException(string.Format(CultureInfo.CurrentCulture, errorMsg, faultException.Detail.Context[0] as string), faultException));
            }

            default:
                DataException e = new DataException(errorCode, faultException);
                e.DataClientId = faultException.Detail.Context[0] as string;
                e.DataServer   = faultException.Detail.Context[1] as string;
                return(e);
            }
        }
Example #2
0
        /// <summary>
        /// Validate data server information
        /// </summary>
        /// <param name="dsInfo">data server information</param>
        public static void ValidateDataServerInfo(DataServerInfo dsInfo)
        {
            // File share point should be in the form of: \\server\share...
            // and server cannot be "localhost"
            string fileSharePath = dsInfo.AddressInfo.Trim();
            Match  m             = fileSharePointValid.Match(fileSharePath);

            if (!m.Success ||
                string.Equals(m.Groups["Server"].Value, LocalHostName, StringComparison.InvariantCultureIgnoreCase))
            {
                DataException e = new DataException(DataErrorCode.DataServerMisconfigured, string.Format(SR.InvalidFileShareFormat, dsInfo.AddressInfo));
                e.DataServer = dsInfo.AddressInfo;
                throw e;
            }
        }