C# 在asmx webmethod中使用httpclient

C# 在asmx webmethod中使用httpclient,c#,web-services,asynchronous,asmx,C#,Web Services,Asynchronous,Asmx,是否可以使用httpclient在ASMX WebMethod内调用REST服务? httpclient库是异步的,因为asmx不支持异步等待(TAP),所以我使用.Result强制调用同步。但是,这一次httpclient无法成功进行调用,我发现远程服务器主动拒绝连接错误。如果我在WinForms应用程序中使用async await或.Result运行同一段代码,那么它可以正常工作 这是ASMX WebMethod的问题吗 [WebMethod] public void Get(){

是否可以使用httpclient在ASMX WebMethod内调用REST服务? httpclient库是异步的,因为asmx不支持异步等待(TAP),所以我使用.Result强制调用同步。但是,这一次httpclient无法成功进行调用,我发现远程服务器主动拒绝连接错误。如果我在WinForms应用程序中使用async await或.Result运行同一段代码,那么它可以正常工作

这是ASMX WebMethod的问题吗

[WebMethod]
public void Get(){

   //Sample (off the top of my head)
   HttpClient client = new HttpClient();
   //more code
   Task.Run(()=> client.GetDocument()).Result;

}

谢谢,您可以在管道中插入一个模块来处理处理,而不是实际的.asmx代码。但我建议在遇到麻烦之前,只需使用
HttpWebRequest

不要执行
。结果
。不要在Asp.Net上下文中执行
Task.Run()

模块:

public class Proxy : IHttpModule
{
    public void Init(HttpApplication context)
    {
        var wrapper = new EventHandlerTaskAsyncHelper(DoAsyncWork);
        context.AddOnBeginRequestAsync(wrapper.BeginEventHandler, wrapper.EndEventHandler);
    }

    async Task DoAsyncWork(object sender, EventArgs e)
    {
        // await... anything
    }
}

HttpClient=新的HttpClient();var tt=Task.Run(()=>client.GetAsync(;)--变量tt现在包含响应及其完整的sync@Immanuel,您已经做了两件在Asp.Net中不应该做的事情-
.Result
Task.Run()
。感谢您的回复。我如何在asmx webmethod中使用此类?您可以在web.config或IIS中注册模块。在代码中,您必须检查请求是否是针对您的web服务的,如果是,请执行您的操作。否则,跳出并让asp管道继续。有许多资源可用于使用模块,但除非是为了实现可伸缩性,您确实需要异步。我仍然建议您使用同步
HttpWebRequest
。我理解。非常感谢您回答我的问题