WCF 및 Entity Framework를 사용하는 웹 서비스를 통해 작업 중이며 호출 클라이언트에 HTTP 상태 코드를 보거나 반환하는 방법을 알고 싶습니다.
내가 가진 코드는 다음과 같습니다.
IUserService.cs
[OperationContract]
[WebInvoke(Method = "GET", ResponseFormat = WebMessageFormat.Json, BodyStyle = WebMessageBodyStyle.WrappedRequest, UriTemplate = "/GetUsers")]
List<User> GetUsers();
UserService.svc.cs
public List<User> GetUsers()
{
var userController = new UserController();
return userController.GetUsers();
}
UserController.cs
public List<User> GetUsers()
{
List<User> serverResponse = new List<User>();
try
{
using (var db = new MyEntities())
{
List<user> userList = db.users.ToList();
foreach (user userRecord in userList)
{
User userDto = new User();
userDto.userId = userRecord.user_id;
userDto.name = userRecord.user_name;
serverResponse.Add(userDto);
}
}
}
catch (Exception ex)
{
}
return serverResponse;
사용자 DTO
[DataContract]
public class User
{
[DataMember(Name = "name")]
public string name { get; set; }
[DataMember(Name = "userId")]
public int userId { get; set; }
}
다른 API를 사용하거나 작업 할 때 상태 코드가 응답과 같은 사전 (예 : 클라이언트 호출 응답의 키 값 쌍에있는 "success" "200")에 반환 될 수 있음을 확인했습니다. web.Config 또는 Interface 클래스에서 WCF에 대해 이와 같은 것을 활성화하는 방법이 있습니까? 클라이언트가 성공 또는 실패에 대한 오류 코드를 수신하여 문제가 발생하면 대응할 수 있기를 바랍니다. 브라우저에서이 요청을 실행하면 다음과 같은 유효한 JSON이 반환됩니다.
[
{
"name": "APIClientTestUser",
"userId": 212,
}
]
이 JSON 또는 다른 곳에서 적절한 HTTP 코드로 호출이 성공했는지 실패했는지 클라이언트가 알기를 원합니다. 이를 수행하는 방법에 대한 팁이나 조언을 주시면 감사하겠습니다.
아마도 가장 간단한 접근 방식은 결과를 일반 응답 객체로 래핑하는 것입니다.
[DataContract]
public class Response<T>
{
[DataMember]
public T Result { get; set; }
[DataMember]
public int Status { get; set; }
}
// then your declaration
Response<List<User>> serverResponse = Response<List<User>>();
// on success
serverResponse.Result = userList;
serverResponse.Status = 200; // ok
// on fail
serverResponse.Status = 500; // fail
// and contract
[OperationContract]
[WebInvoke(Method = "GET", ResponseFormat = WebMessageFormat.Json, BodyStyle = WebMessageBodyStyle.WrappedRequest, UriTemplate = "/GetUsers")]
Response<List<User>> GetUsers();
이 기사는 인터넷에서 수집됩니다. 재 인쇄 할 때 출처를 알려주십시오.
침해가 발생한 경우 연락 주시기 바랍니다[email protected] 삭제
몇 마디 만하겠습니다