小编Tim*_*lds的帖子

使用 Owin.Host.SystemWeb 托管的 AspNet WebApi 异常中间件无法捕获 POST 请求

我有一个使用 Microsoft.Owin.Host.SystemWeb 托管在 Owin 中的 AspNet WebApi 2 的项目,该项目使用 Owin 中间件并通过 httpConfiguration 添加 IExceptionHandler 来实现异常处理,如本文所述

在下面的项目中,我有一个控制器,它会抛出带有 Get 和 Post 端点的异常。创建 get 请求时,我从 Owin 异常中间件获得了预期的响应;

在此输入图像描述

但是,当发出 post 请求时,中间件将被跳过并返回以下内容;

在此输入图像描述

看来 post 请求会跳过中间件并在进入 Owin 异常处理程序之前返回 500。我希望能够捕获发布请求异常并记录它。知道应该如何做吗?是什么导致了 post 和 get 之间的不同行为?

示例存储库和代码片段;

https://github.com/timReynolds/WebApiExceptionDemo

OwinExceptionHandler中间件

public class OwinExceptionHandlerMiddleware
{
    private readonly AppFunc _next;

    public OwinExceptionHandlerMiddleware(AppFunc next)
    {
        if (next == null)
        {
            throw new ArgumentNullException("next");
        }

        _next = next;
    }

    public async Task Invoke(IDictionary<string, object> environment)
    {
        try
        {
            await _next(environment);
        }
        catch …
Run Code Online (Sandbox Code Playgroud)

c# asp.net-web-api asp.net-web-api2 owin-middleware

4
推荐指数
1
解决办法
962
查看次数

node-orm2实例缺少save方法

我是使用node-orm2的新手,我遇到了以下问题;

TypeError: Object [object Object] has no method 'save'
Run Code Online (Sandbox Code Playgroud)

完整堆栈跟踪http://pastebin.com/cb9Lt9pB

此错误来自Model方法,定义如下;

User.findOrCreate = function (providerName, token, tokenSecret, uid, profile, done) {
this.find({uid: uid}, 1, function(err, user) {
  if (user) {

    user.displayName = profile.displayName;
    user.profileImage = profile._json.profile_image_url;

    user.save(function(err){
      return done(err, user, false);
    });

  } else {
    ....
Run Code Online (Sandbox Code Playgroud)

模型定义的完整代码在http://pastebin.com/7Bv8XG36

据我所知,实例没有使用文档(https://node-orm.readthedocs.org/en/latest/ref/instance.html)中概述的save方法返回.

如果我在用户对象上执行console.log,你可以清楚地看到它除了getter和setter之外没有任何方法.

[ { id: [Getter/Setter],
uid: [Getter/Setter],
username: [Getter/Setter],
displayName: [Getter/Setter],
token: [Getter/Setter],
tokenSecret: [Getter/Setter],
profileImage: [Getter/Setter] } ] 
Run Code Online (Sandbox Code Playgroud)

如果我使用不正确,任何人都可以提供任何见解吗?或任何指针,以帮助我理解为什么save方法不在实例上.

作为参考,我使用最新版本的node-orm2("orm":"*")和mysql.

javascript node.js node-orm2

3
推荐指数
1
解决办法
646
查看次数