小编Mil*_*anG的帖子

.NET Web API CORS PreFlight请求

我在向其他域上的Web API发出PUT和DELETE CORS请求时遇到一些麻烦.

我已经通过http://www.asp.net/web-api/overview/security/enabling-cross-origin-requests-in-web-api#create-webapi-project教程对API进行了编码.

GET和POST请求工作正常,但DELETE和PUT没有.我收到这条消息:

Failed to load resource: the server responded with a status of 405 (Method Not Allowed)
Failed to load resource: No 'Access-Control-Allow-Origin' header is present on the requested resource.
Run Code Online (Sandbox Code Playgroud)

当我在使用ASP.NET Web API的CORS支持PUT和DELETE时向WebConfig添加代码时,我只得到第一个错误.

有人可以帮我这个吗?

.net cors http-delete preflight

16
推荐指数
2
解决办法
2万
查看次数

LINQ 表达式中的 Func 参数

我对 LINQ 表达式中的 Func 委托有问题。这是该方法有问题的部分(repository.Items 是IQueryable<T>)

public static ActionResult XXX<T>(IRepository<T> repository,
        Func<T, int> keyExtractor, int id = 0)
    {
        if (id == 0) return ...
        T item = repository.Items.Where(x => keyExtractor(x) == id).
           FirstOrDefault();
        if (item == null) return ...
        try {
            repository.DeleteItem(item);
            return ...
        } catch (Exception e) {
            return ...
        }
    }
Run Code Online (Sandbox Code Playgroud)

但是,当我运行该方法时,出现错误,例如 LINQ 实体中不支持节点类型。我也尝试过使用 predikate 版本,但我一点运气都没有。

任何想法如何解决它?

我找到了一种可能的方法。LINQ 执行延迟执行,所以我必须首先像这样强制执行:

T item = repository.Items.AsEnumerable().Where(x => keyExtractor(x) == id)

.net c# linq

2
推荐指数
1
解决办法
2513
查看次数

标签 统计

.net ×2

c# ×1

cors ×1

http-delete ×1

linq ×1

preflight ×1