我一直在努力Response.Body
从ASP.NET核心操作中获取属性,而我能够识别的唯一解决方案似乎不是最佳的.该解决方案需要Response.Body
在一段MemoryStream
时间内将流读取到字符串变量中,然后在发送到客户端之前将其交换回来.在下面的示例中,我试图Response.Body
在自定义中间件类中获取值. Response.Body
是一个集在ASP.NET核心出于某种原因唯一的财产?我在这里遗漏了什么,或者这是一个疏忽/错误/设计问题?有更好的阅读方式Response.Body
吗?
当前(次优)解决方案:
public class MyMiddleWare
{
private readonly RequestDelegate _next;
public MyMiddleWare(RequestDelegate next)
{
_next = next;
}
public async Task Invoke(HttpContext context)
{
using (var swapStream = new MemoryStream())
{
var originalResponseBody = context.Response.Body;
context.Response.Body = swapStream;
await _next(context);
swapStream.Seek(0, SeekOrigin.Begin);
string responseBody = new StreamReader(swapStream).ReadToEnd();
swapStream.Seek(0, SeekOrigin.Begin);
await swapStream .CopyToAsync(originalResponseBody);
context.Response.Body = originalResponseBody;
}
}
}
Run Code Online (Sandbox Code Playgroud)
尝试使用EnableRewind()的解决方案:
这仅适用于Request.Body
,而不是Response.Body
.这导致从而Response.Body
不是实际的响应主体内容中读取空字符串. …
我正在尝试对基本的Azure功能进行单元测试.函数的Run方法需要一个TraceWriter参数; TraceWriter是一个抽象类,我在模拟这种依赖的文档方面找不到太多.
这是我试图测试的方法的签名:
public static void Run(string myQueueItem, TraceWriter log)
Run Code Online (Sandbox Code Playgroud)
有关模拟TraceWriter和/或Azure功能单元测试策略的任何见解将非常感激.
如何在PostgreSQL中启用autovacuum?我理解目的,我找不到关于如何启用它的简单答案.
我正试图在Windows上的PostgreSQL中编写一个函数,并在体内使用Python脚本,并且在尝试创建plpythonu扩展时遇到错误消息.我正在运行的命令是:
CREATE EXTENSION plpythonu;
Run Code Online (Sandbox Code Playgroud)
这会产生以下错误消息:
ERROR: could not access file "$libdir/plpython2": No such file or directory
SQL state: 58P01
Run Code Online (Sandbox Code Playgroud)
我也试过跑:
CREATE EXTENSION plpython3u;
Run Code Online (Sandbox Code Playgroud)
这会导致此错误:
ERROR: could not load library "C:/Program Files (x86)/PostgreSQL/9.2/lib/plpython3.dll": The specified module could not be found.
SQL state: 58P01
Run Code Online (Sandbox Code Playgroud)
plpython3.dll文件存在于此位置,但显然缺少一些关键依赖项.我到处搜索,发现没有任何帮助.我在机器上安装了Python 2和3 ...
我有一个Cosmos DB集合,其中包含基于设备ID的多个分区.我经常遇到需要通过特定设备ID检索最新文档的用例.我目前正在使用SELECT TOP 1
DocumentDB API中提供的功能,如下所示:
SELECT TOP 1 *
FROM c
WHERE c.deviceId = 5
ORDER BY c.timeStamp DESC
Run Code Online (Sandbox Code Playgroud)
正如人们所预料的那样,随着集合和单个分区的大小增加,这种方法导致RU/s消耗增加并且性能降低.作为此问题的临时补救措施,我添加了额外的where子句以按时间戳限制查询范围:
SELECT TOP 1 *
FROM c
WHERE c.deviceId = 5
AND c.timeStamp >= 1506608558 --timestamps are unix/epoch based to optimize indexing
AND c.timeStamp <= 1506694958
ORDER BY c.timeStamp DESC
Run Code Online (Sandbox Code Playgroud)
我想知道是否有更好的方法来按分区ID选择最新文档,因为添加此where子句可能会导致意外或缺少结果.
看看下面显示的Go文档,我无法理解接收器和参数之间的区别:
func (p *Page) save() error {
filename := p.Title + ".txt"
return ioutil.WriteFile(filename, p.Body, 0600)
}
Run Code Online (Sandbox Code Playgroud)
此方法的签名读取:这是一个名为save的方法,它将接收器p作为指向Page的指针.它不带参数,并返回类型错误的值.
我有一个Azure API应用服务,我想为其配置"优先级"流量管理(这是新的流量管理器,而不是经典).我已将服务部署到两个单独的Azure区域,并配置了Traffic Manager实例以执行到两个服务实例的优先级路由.这些服务具有以下自定义域配置:
foo1.mydomain.com
foo2.mydomain.com
我有两个指向相应Azure App Service IP地址的子域的记录.
我还为服务附加了通配符证书,如果我导航到https://foo1.mydomain.com或https://foo2.mydomain.com,一切都很顺利.流量管理器端点监控将两个端点显示为联机并启用.
现在,我想让客户端向虚荣端点发出请求:foo.mydomain.com,我为其创建了一个CNAME.CNAME指向流量管理器实例URL myapi.trafficmanager.net.
当我尝试使用SSL/TLS(即https://foo.mydomain.com)解析虚荣URL时,我收到证书错误,因为流量管理器附加了*.azurewebsited.net证书.如果我尝试在没有SSL/TLS的情况下解析虚URL,即http://foo.mydomain.com,我会收到404和"未找到Web应用程序"消息.同样,解析单个端点显式返回200预期.
我的问题:如何使用我的SSL/TLS证书和虚URL来正确配置Azure Traffic Manager以对两个自定义域名进行优先级路由?
挖掘输出以供参考:
my-machine:~ jtw$ dig foo.mydomain.com
; <<>> DiG 9.8.3-P1 <<>> foo.mydomain.com
;; global options: +cmd
;; Got answer:
;; ->>HEADER<<- opcode: QUERY, status: NOERROR, id: 4088
;; flags: qr rd ra; QUERY: 1, ANSWER: 3, AUTHORITY: 0, ADDITIONAL: 0
;; QUESTION SECTION:
;foo.mydomain.com. IN A
;; ANSWER SECTION:
foo.mydomain.com. 299 IN CNAME myapi.trafficmanager.net.
myapi.trafficmanager.net. 299 IN …
Run Code Online (Sandbox Code Playgroud) 我有一个要重命名的现有 ARM VNET,如何实现?从 Azure 门户中重命名似乎是不可能的,我也没有发现任何 PowerShell 解决方案。
还有其他人在Windows 10上遇到Git Bash shell问题?它在我的机器上运行速度非常慢,否则运行良好.Git Bash shell与Git for Windows一起安装,尚未修改.
尝试在请求上设置“ Content-Type”标头属性时,MediaTypeWithQualityHeaderValue参数的用途是什么?MSDN文档只是指出:
表示具有附加质量的内容类型标头值。
“附加质量”的具体含义是什么?
azure ×3
c# ×3
postgresql ×2
.net ×1
asp.net ×1
asp.net-core ×1
autovacuum ×1
bash ×1
dns ×1
failover ×1
git ×1
go ×1
https ×1
plpython ×1
python ×1
unit-testing ×1
vacuum ×1
windows-10 ×1