Я только начинаю с C# и немного застрял на этом.Возврат пользовательского сообщения об ошибке в службе WCF http
Мне нужно вернуть пользовательское сообщение об ошибке, когда пользователь не имеет доступа к определенному ресурсу.
класс Интерфейс для службы:
[ServiceContract]
public interface IPatientDemographics
{
[OperationContract]
[WebInvoke(Method = "GET", UriTemplate = "GetPatientDemographics/{strHospId}/{strView=mobile}",
ResponseFormat = WebMessageFormat.Json, BodyStyle = WebMessageBodyStyle.Wrapped)]
[return: MessageParameter(Name = "PatientDemographicsResultSet")]
List<PatientDemographics> GetPatientDemographics(string strHospId, string strView);
[OperationContract]
[FaultContract(typeof(AccessError))]
[return: MessageParameter(Name = "Error")]
AccessError ReturnAccessError();
}
[DataContract]
public class AccessError
{
[DataMember]
public bool Error { get; set; }
[DataMember]
public string Message { get; set; }
}
Класс обслуживания:
[ServiceBehavior(AddressFilterMode=AddressFilterMode.Any)]
public class PatientDemographics : IPatientDemographics
{
public List<PatientDemographics> GetPatientDemographics(string strHospId, string strView)
{
AuthenticationDAO authenticationDAO = new AuthenticationDAO();
string userName = GetUserNameFromHeader();
if (authenticationDAO.CheckPatientSealAccess(strHospId, userName, "-1", "N"))
{
PatientDAO patientDAO = new PatientDAO();
patientDAO.AuditPatient(strHospId, userName);
return patientDAO.GetPatientDemographics(strHospId);
}
else
{
AccessError serviceData = new AccessError();
serviceData.Error = true;
serviceData.Message = "User does not have access to patient record";
throw new FaultException<AccessError>(serviceData, "User does not have access to patient record");
}
}
}
На данный момент, это просто возвращает пустой объект, если пользователь не имеет доступа. Я пытался бросить исключение FaultException, но не повезло. В идеале я хочу, чтобы вернуться в формате JSON что-то вроде:
{
error: "User does not have access to patient record"
}
Это не «веб-сервис .NET»: это WCF. Вы должны уточнить свои вопросы: D –
Не могли бы вы показать код, используемый для исключения исключения? –
Я редактировал код, который я пробовал –