在ASIHTTPRequest库中是否有ASIWebPageRequest的替代方法,我可以用它来下载iOS中的整个网页,包括CSS,JavaScript和图像文件等?我似乎无法在AFNetworking框架中找到类似的类,到目前为止我的搜索还没有成功.我不能使用ASIHTTPRequest,因为我似乎无法在我的任何应用程序中使用它,没有我为iOS7找到工作的例子而且我更倾向于使用更新的东西.
我基本上想要将整个网页存储在iPhone/iPad上的目录中,以便用户可以在本地编辑它,然后将整个目录发送到他们的Web服务器.用户还需要能够在UIWebView中随时查看网页.
如果这不可能,我将只需下载HTML文件,然后解析它以查找外部资源的URL,然后单独下载.我宁愿不这样做,但是如果我必须那么什么是最好的图书馆来完成这个?
感谢任何人帮助我!
我有一个 ODataController ,其端点如下:
[EnableQuery]
public IQueryable<Customer> Get()
{
return _context.Customers;
}
Run Code Online (Sandbox Code Playgroud)
WebApiConfig 的 Register 方法中的此设置:
config.Count().Filter().OrderBy().Expand().Select().MaxTop(100);
Run Code Online (Sandbox Code Playgroud)
有很多客户条目,我不希望客户一次请求太多,因为查询将花费很长时间。幸运的是,这个设置意味着如果他们发出这样的请求:
http://domain.com/api/Customers ?$top=1000
因为它高于 100,所以会阻止他们检索它们。
但是,如果他们提出这样的请求:
http://domain.com/api/Customers
然后,这将尝试检索所有客户,这是我不想要的。
我知道我可以这样设置页面大小:
[EnableQuery(PageSize = 10)]
public IQueryable<Customer> Get()
{
return _context.Customers;
}
Run Code Online (Sandbox Code Playgroud)
这只会返回 10 个结果,但是我仍然希望用户能够指定自己的 $top 和 $skip 值进行分页(并决定每页需要多少个结果)。我想要的是最多 100 个,默认为 10 个。
我怎样才能实现这个目标?
编辑
我尝试了以下方法,但在使用 Expand 子句时它无法正常工作。还有其他想法吗?
[EnableQuery(MaxTop = 100)]
public IQueryable<Customer> Get(ODataQueryOptions<Customer> queryOptions)
{
IQueryable<Customer> query = _context.Customers;
int? top = queryOptions?.Top?.Value;
if (top == null)
{
query = query.Take(10);
}
return query;
}
Run Code Online (Sandbox Code Playgroud) 在我的 MVC4 应用程序中,有两种登录方式;作为客户或后台管理员。
目前,如果您以其中任何一种身份登录,ClaimsPrincipal 将被替换为包含新登录的单一身份的全新的。目前不可能同时登录客户帐户和管理员帐户,这是我们现在的要求。
我觉得使用此处描述的 AddIdentity 方法向现有的 ClaimsPrincipal 添加新身份是有意义的:https: //msdn.microsoft.com/en-us/library/system.security.claims.claimsprincipal.addidentity( v=vs.110).aspx
然而,这并没有添加第二个身份。然后我找到了这篇文章:https://blogs.msdn.microsoft.com/mrochon/2017/06/23/claims-augmentation-post-token/
这部分我特别感兴趣:
从理论上讲,通过向 ClaimsPrincipal 添加新的 ClaimsIdentity 应该可以实现这一点。但是,ASP.NET 4 中的 OWIN 不会序列化新标识。另一种方法是修改现有的 ClaimsIdentity,如下所示
那么,如果在 ASP.NET 4 中不可能,为什么不呢?Microsoft 文档中哪里提到了这一点?如果我们迁移到 .NET Core,我们可以期望它能够工作吗?ASP.NET 4 中有解决此问题的方法吗?
我有一个UIViewController.根UIView包含一个自定义UIScrollView,用于在网格中显示缩略图图像(ThumbnailGrid类).这个网格可以包含很多显示图像的UIViews(GridTile类).因为有很多网格图块,用户可以向下滚动ThumbnailGrid.我只想加载用户实际可以看到的网格图块的图像,我不想为屏幕边缘的网格图块加载图像.
如何确定是否在屏幕上显示其中一个GridTile UIView?
我尝试了以下但它似乎总是返回false.
- (bool) isViewDisplayed:(UIView*)view
{
CGRect viewFrame = view.frame;
CGRect appFrame = [[UIScreen mainScreen] applicationFrame];
if (CGRectIntersectsRect(viewFrame, appFrame)) return true;
return false;
}
Run Code Online (Sandbox Code Playgroud)
我错过了什么吗?
在此先感谢您的帮助!
编辑
解决方案
事实证明坐标系统是错误的,所以我得到了一些奇怪的事情,其中方法应该返回true,而是返回false,反之亦然.
- (bool) isViewDisplated:(UIView*)view
{
CGRect viewFrame = [parentOfView convertRect:view.frame toView:nil];
CGRect appFrame = [[UIScreen mainScreen] applicationFrame];
if (CGRectIntersectsRect(viewFrame, appFrame)) return true;
return false;
}
Run Code Online (Sandbox Code Playgroud) 我们使用VSTS构建各种Azure Web应用程序并将它们部署到不同的环境中.在发布过程中,我们正在对Web.config文件执行转换,使用存储在VSTS中的变量来处理每个环境的连接字符串等内容.
我们想用Azure功能做类似的事情,但我们遇到了问题.我们发现执行转换为appsettings.json文件不起作用.添加的新键/值对在Azure中不起作用,并且Azure中未加载对现有键的更改.
我查看了无数文档,并且只找到了文档,说明Azure功能的应用程序设置必须使用Azure门户存储,或者在发布过程中使用PowerShell脚本进行设置.但是,这些解决方案会将连接字符串和其他秘密暴露给有权访问Azure门户的任何人,这不是我们想要的.
如何向Azure功能提供应用程序设置,例如AzureWebJobsStorage和AzureWebJobsDashboard值,而不在Azure门户上公开它们?
azure azureportal azure-functions azure-pipelines-release-pipeline
我们使用以下设置:
我们使用带有队列触发器的 Azure 函数来处理 JSON 消息队列。
这些消息均通过 HTTP POST 转发到 API 端点,以进行进一步处理。
API可以返回3种可能的HTTP状态码;200(正常)、400(错误请求)、500(内部服务器错误)。
如果 API 返回 200,则消息已正确处理,一切正常。队列触发功能似乎会自动删除队列消息,这对我们来说没问题。
如果 API 返回 400,则 API 具有获取消息并将其添加到表中的逻辑,该表的状态表明消息格式错误或无法处理。因此,我们同意消息自动从队列中删除,并且 Azure Function 可以正常结束。
如果 API 返回 500,我们确保函数重试将消息发布到 API,直到状态代码为 200 或 400(因为 API 可能存在问题,我们不希望丢失消息)。我们正在使用Polly来实现这一目标。我们对其进行了设置,因此它本质上会以指数退避方式永远重试。
然而我们最近遇到了这个问题:
在某些情况下,API 会针对某些消息返回 500。此错误完全是暂时的,并且会不可预测地出现和消失。使用 Polly 永远重试会很好,除非并非所有消息都会导致此错误,并且本质上“坏”消息会阻止“好”消息的处理。
举例来说,我的队列中有 50 条消息。队列前面的前 32 条消息是“坏”消息,有时会从 API 返回 500。这些消息由 Azure Function 获取并同时处理。其他 18 条消息是“好”消息,将返回 200。在成功处理“坏”消息之前,不会处理这些“好”消息。本质上,坏的会导致好的交通堵塞。
我的解决方案是,如果当前消息已重试一定次数,则尝试取消 Azure 函数的执行。我想也许该消息会在一段时间后变得可见,但在那段时间里,它给了好的消息时间来处理。但是,我不知道如何取消该函数的执行,而不导致队列消息被完全删除或推送到有害队列。
我可以使用队列触发功能来实现这一点吗?我可以使用计时器触发器来代替吗?
非常感谢!
asp.net ×2
azure ×2
ios ×2
objective-c ×2
afnetworking ×1
azure-pipelines-release-pipeline ×1
azure-queues ×1
azureportal ×1
c# ×1
odata ×1
owin ×1
uiview ×1
uiwebview ×1