问题是Azure WebJobs SDK仅支持公共静态方法作为作业入口点,这意味着无法实现构造函数/属性注入.
我无法在官方WebJobs SDK文档/资源中找到有关此主题的任何内容.我遇到的唯一的解决方案是基于对这个职位描述的服务定位器(反)模式在这里.
是否有一种很好的方法可以为基于Azure WebJobs SDK的项目使用"正确的"依赖注入?
字符串"con"有什么问题?
好的,我的api路由配置相当无趣:
config.Routes.MapHttpRoute(
name: "DefaultApi",
routeTemplate: "api/{controller}/{id}",
defaults: new { id = RouteParameter.Optional }
);
Run Code Online (Sandbox Code Playgroud)
LocationController具有以下方法:
public List<LocationViewModel> Get(string id)
{
return _ds.SearchLocations(id);
}
Run Code Online (Sandbox Code Playgroud)
一切都按预期工作,除了我尝试获取这样的资源时出现HTTP 404错误:
/ API /位置/ CON
在这种情况下,该方法不会被击中.奇怪的是,如果我将"con"以外的任何其他字符串设置为id参数,则控制器方法正在被击中并正常工作!
这是在我使用Cassini在localhost上调试我的应用程序时发生的事情(与IIS Express相同).我的项目目录中没有名为"con"的文件.处理应用程序错误事件后,IntelliTrace显示一条HttpException并显示消息:"无法映射路径'/ api/location/con'"...
有线索吗?这是一个已知的错误?
提前致谢!
在我的应用程序(EF6 + SQL Server)中,我动态创建EF查询以启用丰富的搜索功能.
这些查询是通过链接一堆Where()谓词,并使用少量聚合将结果投影到已知的CLR类型中创建的.在所有情况下,EF都会生成一个返回少量结果的SQL查询(大约10个).
使用SQL事件探查器我可以看到这些生成的查询在由数据库执行时的执行时间只有几毫秒.但是,除非查询简单,否则总执行时间(从我的代码调用ToList()或Count())在几百毫秒内!代码在发布模式下构建,无需附加调试器即可进行测试.
任何人都可以给我任何暗示我的方法可能有什么问题吗?与原始SQL执行时间相比,EF的开销是否有可能达到两个数量级?
编辑:
这些是我用来过滤结果集的一些代码示例:
if (p.PriceMin != null)
query = query.Where(a => a.Terms.Any(t => t.Price >= p.PriceMin.Value));
if (p.StartDate != null && p.EndDate != null)
query = query.Where(a => a.Terms.Any(t => t.Date >= p.StartDate.Value && t.Date <= p.EndDate.Value));
if (p.DurationMin != null)
query = query.Where(a => a.Itinerary.OfType<DayElement>().Count() > p.DurationMin.Value - 2);
if (p.Locations != null && p.Locations.Count > 0)
{
var locs = p.Locations.Select(l => new Nullable<int>(l)).ToList();
query = query.Where(a => a.Itinerary.OfType<MoveToElement>().Any(e => locs.Contains(e.LocationId)) || …Run Code Online (Sandbox Code Playgroud)