小编Ste*_*e S的帖子

如何在每个请求中使用不同的凭据重用 HttpClient 实例

我有一个 MVC 5 应用程序,其中包含一个发出 HTTP 请求的控制器操作。为此,我使用 HttpClient。

我已经学会从别人(比如这个博客帖子),并从我自己的经验,并能同时instantating众多HttpClients可以有不只是应用程序,但在服务器整体的性能产生负面影响。

到目前为止,我可以通过这样的代码解决重用 HttpClient 实例的要求

using (var handler = new HttpClientHandler() { Credentials = new NetworkCredential(getUsername(), getHashedPassword())})
using (var client = new HttpClient(handler))
{
   // Long running loop that makes a different HTTP request
   // on each iteration but using the same HttpClient instance
}
Run Code Online (Sandbox Code Playgroud)

需要在控制器操作中进行类似的重用,我选择在控制器类中使用 HttpClient 的静态实例。问题是传递给 HttpClientHandler 的凭据随着每个请求而变化,因为它们部分依赖于时间戳值(getHashedPassword()每次调用该方法时都会生成不同的密码)。

由于在远程服务器上执行身份验证的方式,我还必须在构成请求正文的 XML 内容中包含密码。

这就是我遇到问题的地方:

如何在对控制器操作的不同调用中重用相同的 HttpClient 实例,同时确保它使用具有最新凭据的处理程序?

甚至有可能做到这一点吗?

是否可以在将处理程序传递给 HttpInstance 后更新它?

或者我是否需要修改客户端对象的 DefaultRequestHeaders,如果不同线程同时使用该对象,根据某些来源可能会引入微妙的错误?

.net c# asp.net-mvc

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

编译器返回错误"char*(int)"的间接级别与'int()'不同,即使返回的数据似乎与函数返回类型匹配

我只是在学习C,这是我第一次使用stackoverflow,所以我不确定这是否是问这个问题的权利,因为它与周围的其他人相比似乎微不足道,但我在教科书中找到了这段代码,当我尝试在Visual Studio中编译我得到这个:

**error C2040: 'menutext' : 'char *(int)' differs in levels of indirection from 'int ()'**
Run Code Online (Sandbox Code Playgroud)

说实话,我已经查看了代码,但我不知道为什么编译器会抱怨.我真的需要一些帮助.这是代码:

/*********************************************************/
/* */
/* MENU : program which prints out a menu */
/* */
/*********************************************************/
main ()
{ 
  int str_number;
  for (str_number = 0; str_number < 13; str_number++)
  {
    printf ("%s",menutext(str_number));
  }
}
/*********************************************************/
char *menutext(int n) /* return n-th string ptr */
{
  static char *t[] =
  {
    " -------------------------------------- \n",
    " | ++ MENU ++ |\n",
    " | …
Run Code Online (Sandbox Code Playgroud)

c arrays pointers function

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

标签 统计

.net ×1

arrays ×1

asp.net-mvc ×1

c ×1

c# ×1

function ×1

pointers ×1