当前位置: 首页 > 知识库问答 >
问题:

如何在服务响应中显示WCF HTTP代码

濮阳安澜
2023-03-14

我正在使用WCF和实体框架处理一个web服务,我想知道如何查看HTTP状态代码或将其返回给调用客户端。

我拥有的代码如下:

   [OperationContract]
        [WebInvoke(Method = "GET", ResponseFormat = WebMessageFormat.Json, BodyStyle = WebMessageBodyStyle.WrappedRequest, UriTemplate = "/GetUsers")]
        List<User> GetUsers();
  public List<User> GetUsers()
        {
            var userController = new UserController();
            return userController.GetUsers();
        }
 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;
  [DataContract]
    public class User
    {
        [DataMember(Name = "name")]
        public string name { get; set; }

        [DataMember(Name = "userId")]
        public int userId { get; set; }

    }
 [
    {
        "name": "APIClientTestUser",
        "userId": 212,
    }
]

无论是使用这个JSON还是在其他地方,我都希望客户机知道调用是否通过适当的HTTP代码成功或失败。任何关于如何做到这一点的提示或建议都将不胜感激。

共有1个答案

杨成礼
2023-03-14

最简单的方法可能是将结果包装成一般的响应对象

[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();
 类似资料:
  • 我正在jMeter中执行负载测试,其中有两个线程组,每个线程组都有50个用户,上升周期为60秒。使用Blazemeter,我记录了一个填写和提交表格的会话,然后稍微修改了一下。其中一组是使用POST方法登录,然后提交表单,另一组是匿名用户填写的。当我运行测试时,我遇到了错误: 响应代码:非HTTP响应代码:org.apache.HTTP。ConnectionClosedException响应消息:

  • 问题内容: 对于不正确的Ajax操作,我将HTTP标头代码设置为403并发送以下响应: 但是,在处理错误时我无法访问此数据…是否可以从jqXHR访问“消息”数据? 像jqXHR.message之类的东西? 非常感谢您的帮助… EDIt: 返回: 但是xhr.responseText.message不返回任何内容… 编辑:此代码有效: 问题答案: 您应该进入jQuery“错误”回调… http://

  • 凌空JSON解析技术对此有用吗?

  • 问题内容: 我最近公布的我面对这个问题的详细说明,这里的SO。由于我无法发送实际的请求,因此我使用了超时来模拟异步行为。在@Gloopy的帮助下,从模型到视图的数据绑定工作正常 现在,当我使用而不是(在本地测试)时,我可以看到异步请求成功,并且在我的服务中充满了json响应。但是,我的看法没有更新。 在这里更新了Plunkr 问题答案: 这是一个可以满足您需求的Plunk:http ://plnk

  • 用于存储Web服务器日志记录 服务器日志仅允许存储在Azure Blob容器上。根据配置,日志按预期存储在Blob容器上。现在,我想使用这些日志在Azure Log Analytics上显示。 在Log Analytics资源管理器上,我可以查看除Web服务器(iis日志)以外的所有其他来源的日志。我错过了什么?