/// <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); } }
/// <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; } }