小编JTW*_*JTW的帖子

如何阅读ASP.NET Core Response.Body?

我一直在努力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不是实际的响应主体内容中读取空字符串. …

c# asp.net-core-mvc asp.net-core asp.net-core-middleware

52
推荐指数
5
解决办法
3万
查看次数

单元测试Azure功能:无法创建TraceWriter的实例,如何模拟?

我正在尝试对基本的Azure功能进行单元测试.函数的Run方法需要一个TraceWriter参数; TraceWriter是一个抽象类,我在模拟这种依赖的文档方面找不到太多.

这是我试图测试的方法的签名:

public static void Run(string myQueueItem, TraceWriter log)
Run Code Online (Sandbox Code Playgroud)

有关模拟TraceWriter和/或Azure功能单元测试策略的任何见解将非常感激.

c# unit-testing azure azure-functions

9
推荐指数
1
解决办法
2397
查看次数

PostgreSQL:如何启用autovacuum?

如何在PostgreSQL中启用autovacuum?我理解目的,我找不到关于如何启用它的简单答案.

postgresql database-administration vacuum autovacuum

7
推荐指数
1
解决办法
6980
查看次数

PostgreSQL无法创建plpythonu扩展

我正试图在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 ...

python postgresql plpython

6
推荐指数
1
解决办法
1540
查看次数

Cosmos DB(DocumentDB API):通过分区ID查询最新文档的有效方法?

我有一个Cosmos DB集合,其中包含基于设备ID的多个分区.我经常遇到需要通过特定设备ID检索最新文档的用例.我目前正在使用SELECT TOP 1DocumentDB 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子句可能会导致意外或缺少结果.

azure-cosmosdb

6
推荐指数
1
解决办法
884
查看次数

Go:方法接收器和参数之间有什么区别?

看看下面显示的G​​o文档,我无法理解接收器和参数之间的区别:

 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的指针.它不带参数,并返回类型错误的值.

go

5
推荐指数
1
解决办法
1121
查看次数

Azure流量管理器SSL设置(非经典)

我有一个Azure API应用服务,我想为其配置"优先级"流量管理(这是新的流量管理器,而不是经典).我已将服务部署到两个单独的Azure区域,并配置了Traffic Manager实例以执行到两个服务实例的优先级路由.这些服务具有以下自定义域配置:

foo1.mydomain.com

foo2.mydomain.com

我有两个指向相应Azure App Service IP地址的子域的记录.

我还为服务附加了通配符证书,如果我导航到https://foo1.mydomain.comhttps://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)

dns https failover azure azure-traffic-manager

5
推荐指数
1
解决办法
5726
查看次数

如何重命名 Azure ARM VNET

我有一个要重命名的现有 ARM VNET,如何实现?从 Azure 门户中重命名似乎是不可能的,我也没有发现任何 PowerShell 解决方案。

azure azure-virtual-network azure-resource-manager

5
推荐指数
1
解决办法
5995
查看次数

Windows 10上的Git Bash速度很慢

还有其他人在Windows 10上遇到Git Bash shell问题?它在我的机器上运行速度非常慢,否则运行良好.Git Bash shell与Git for Windows一起安装,尚未修改.

git bash windows-10

5
推荐指数
1
解决办法
7564
查看次数

C#HttpClient:为什么选择MediaTypeWithQualityHeaderValue?

尝试在请求上设置“ Content-Type”标头属性时,MediaTypeWithQualityHeaderValue参数的用途是什么?MSDN文档只是指出:

表示具有附加质量的内容类型标头值。

“附加质量”的具体含义是什么?

.net c# asp.net dotnet-httpclient

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