C#学习教程:在代码中从C#调用网页但我只想向页面发送请求而不用担心响应。由于有时可能需要一段时间才能响应,我不希望它挂起应用程序。我一直在尝试使用page_load事件WebClientwebC=newWebClient();UrinewUri=newUri("http://localhost:49268/dosomething.aspx");webC.UploadStringAsync(newUri,string.Empty);即使它设置为异步,它仍然会挂起,因为在线程完成之前页面不会完成渲染这应该适合你:System.Net.WebClientclient=newSystem.Net.WebClient();client.DownloadDataAsync(newUri("http://some.url.com/some/resource.html"));WebClient类具有用于在请求完成时通知调用者的事件,但由于您不关心,因此不应该有任何其他事件。Doak,它几乎就在那里,但每次我将任何请求放在一个单独的线程中时,页面仍然不会呈现,直到所有线程完成运行。我发现的最好的方法是调整Doak的方法,使其在超时时挂在那里并吞下错误。我知道这是一个hack但它有效:PWebRequestwr=WebRequest.Create("http://localhost:49268/dostuff.aspx");wr.Timeout=3500;尝试{HttpWebResponse响应=(HttpWebResponse)wr。获取响应();}catch(Exceptionex){//我们知道它会失败,但那很重要!!如果应用程序没有挂起,您需要从Thread调用此方法。对于没有答案的HTTP请求,像这样的东西应该可以完成工作:ThreadmyThread=newThread(newThreadStart(myMethodThatDoHttp));我的线程。开始();publicvoidmyMethodThatDoHttp(){HttpWebRequest请求=(HttpWebRequest)WebRequest.Create("http://www..com");HttpWebResponse响应=(HttpWebResponse)request.GetResponse();查看System.Net.WebClient,特别是使用DownloadDataAsync()方法发送请求而不阻塞应用程序部分的其余部分。要在不中断当前页面的页面流的情况下执行此过程,我建议您创建一个将为您执行代码的WCF服务。将服务设置为使用单向调用,并在页面上发起对服务的Ajax调用。据我所知,HttpWebRequest对象的“BeginGetResponse”方法和“EndGetResponse”方法(通过调用WebRequest.Create获得),resp。BeginGetRequestStream-/EndGetRequestStream方法,HERE尚未反映出来,-尽管它们在文档中明确标记为“异步请求”:不知道,这里发生了什么。如果你要调用的页面在同一个IIS/App上。如果映射字符串包含要调用的页面规范(在ISAPI-cpp中:“返回”(您的“调用”aspx页面)SF_STATUS_REQ_FINISHED;")但也许你在被调用页面中的asp/x/-script执行也被终止。检查问题。考虑使用服务器端include指令(不太可调)或使用Server.Execute.asp文件动态调用。不是真正的异步,但可能值得:通过EARLYResponse.End()(或类似的)在系统的调用页面中明确声明不需要进一步的响应,主要不是对调用者的响应。然后在CALLED页面的脚本中继续。至少可以将等待同步调用结束的时间间隔最小化为10,100左右的fac。将System.Net.WebClient.DownloadDataAsync/DownloadFileAsync与DownloadDataCompleted/DownloadFileCompleted结合使用。以上就是C#学习教程:在代码中从c#调用网页分享的所有内容。如果对你有用,需要进一步了解C#学习教程,希望大家多多关注。本文收集自网络,不代表立场。涉及侵权,请点击维权联系管理员删除。如需转载请注明出处:
