Tag: httprequest

在DelegatingHandler中,HttpContent.ReadAsByteArrayAsync()在没有错误的情况下失败

我正在尝试为API实现HMAC安全性。 一切正常,直到我尝试发布文件。 HMAC解决方案可以在这里找到 – https://github.com/gavinharriss/WebAPI.HMAC – 它是原始的一个分支,允许GET请求和POST请求。 附加文件的代码: var requestContent = new MultipartFormDataContent(); var fileContent = new ByteArrayContent(file); requestContent.Add(fileContent, “file”, filename); 如果我立即调用HttpContent.ReadAsByteArrayAsync()没有问题,字节数组是可用的。 但是,HMAC HttpClient ( HMACHttpClient )实现了DelegatingHandler ( HMACDelegatingHandler ),以便将HMAC头附加到请求。 在HMACDelegatingHandler中 ,请求作为HttpRequestMessage传递, HttpRequestMessage.Content属性在辅助器中用于构建HMAC签名。 构建签名时,从助手类调用以下代码: private static async Task ComputeHash(HttpContent httpContent) { using (var md5 = MD5.Create()) { byte[] hash = null; if (httpContent != null) […]

确定ASP.NET MVC 3中的请求是否为PartialView或AJAX请求

我必须为网站用户提供访问权限。 我在这里做过滤: protected override void OnActionExecuting(ActionExecutingContext filterContext) { } 问题是我无法区分完整的View请求,例如’Index’与PartialViewRequests或AJAX调用请求。 因此页面’Index’具有访问权限,但’PartialViewGridViewForIndex’没有访问权限。 属性ControllerContext.IsChildAction也没有帮助。

试图找出一种在ASP.NET MVC请求管道中的对象之间保持数据的优雅方法

框架:ASP.Net MVC 3 当请求进入时,我通过全局filter拦截请求并基于子域执行数据库查找。 DB查找中的返回int需要持久保存到其他对象(即控制器),以便在需要该数据时不需要再次执行DB命中。 我希望避免使用cookie,因为这些信息是系统的一个相关部分,我不想依赖于启用cookie。 我已经阅读了这里和这里的相关问题,但没有提供任何好的答案。 我其实有两个问题: 到目前为止,我已经提出了一个子域管理器对象来完成繁重的工作,通过我的IoC,管理器对象是HTTP请求作用域,我可以在请求期间随时抓取该管理器作为可能的解决方案。 在我查找之后,是否有更好的方法在MVC请求管道中的不同对象之间传递此信息? – 我已经检查了将信息以某种方式回到请求中的想法(这与问题#2有关)。 如果您要使用请求来存储数据(即拦截请求,执行查找,写入请求)哪里将是保存该信息的逻辑位置? 我查看了会话,但这似乎与为会话配置Web服务器的方式密切相关,我已经提到过我不想使用cookie。 出于安全原因,其他区域(如发布数据和查询字符串集合)将被锁定。 有什么建议?

以编程方式登录PureVolume.com!

我尝试了很多方法,但未能以编程方式登录purevolume.com! 登录URL: http : //www.purevolume.com/login 任何人都可以尝试并提供示例代码来实现这一目标。

如何在客户端加密OData请求有效负载(DataServiceContext)和在ServerSide上解密请求?

我有一个Windows应用程序使用DataServiceContext消费OData v4 WebAPI。 WebApi通过SSL,但我认为任何人都可以使用像fiddler这样的Web调试工具(在Windows应用程序主机上)来捕获请求,并且可以通过更改请求主体来重新发出请求。 所以,如果我可以使用生产环境中的公钥/私钥加密Windows应用程序中的传出请求的RequestBody ,我还在想。 如果是,我怎么可以? 我是否需要创建自定义DataServiceClientRequestMessage或需要在DataServiceContext中的某处挂钩加密过程。 请求将使用MessageHandler解密。 ServiceStack加密消息传递

c#/ asp.net – 如何捕获“System.Web.HttpException:Request timed out”?

在我的asp.net/c#项目中,我使用iTextsharp dll从许多pdf文档中读取文本,但有时我会收到此错误 System.Web.HttpException:请求超时。 但是这样做的代码是: public static bool does_pdf_have_keyword(string keyword, string pdf_src) { try { PdfReader pdfReader = new PdfReader(pdf_src); string currentText; int count = pdfReader.NumberOfPages; for (int page = 1; page <= count; page++) { ITextExtractionStrategy strategy = new SimpleTextExtractionStrategy(); currentText = PdfTextExtractor.GetTextFromPage(pdfReader, page, strategy); if (currentText.IndexOf(keyword, StringComparison.OrdinalIgnoreCase) != -1) return true; } pdfReader.Close(); return […]

有谁知道我收到HttpWebRequest超时的原因?

我想知道你是否可以帮我解决我遇到的一个错误。 我有一个我创建的HTTP管理器,可以帮助我处理来自网站的POSTing / GETing数据。 直到最近,当我试图使用两者的混合物时,它一直工作正常。 第一个循环循环一切正常,在第二个循环上它挂起在HttpWebRequest.GetRequestStream()上。 我已经在网上阅读并找不到真正的解决方案。 以下是获取/接收的代码块: ASCIIEncoding encoding = new ASCIIEncoding(); byte[] buffer = encoding.GetBytes(_PostData); _HttpWebRequest = (HttpWebRequest)WebRequest.Create(_FetchUrl); _HttpWebRequest.Credentials = _Credentials; _HttpWebRequest.Method = _RequestType.ToString(); _HttpWebRequest.ContentType = “application/x-www-form-urlencoded”; _HttpWebRequest.ContentLength = buffer.Length; _HttpWebRequest.UserAgent = userAgent; _HttpWebRequest.CookieContainer = _CookieContainer; _HttpWebRequest.KeepAlive = false; _HttpWebRequest.AllowAutoRedirect = _AllowAutoRedirect; _HttpWebRequest.AutomaticDecompression = DecompressionMethods.GZip; _HttpWebRequest.ServicePoint.Expect100Continue = false; if (_RequestType.Equals(RequestTypes.POST)) { // Write […]

使用Httprequest从给定的URL获取图片

我正在尝试从网络摄像头获取图片。 有一个php-python Web服务来从网络摄像头获取图片并为它们提供服务:它提供了像http://ip/jpeg/camera=1 。 private HttpWebRequest request; private HttpWebResponse response; private CookieContainer container; private Uri uri; private string _user; private string _pass; private string _ip; //Login code as seen in the previous section should be here //GetImages is meant to run as a separate thread private void GetImages(string camNo) { //create the GET request for […]

将数据发布到HTTPSurl时,GetRequestStream()会抛出超时exception

我正在调用Apache服务器上托管的API来发布数据。 我正在使用HttpWebRequest在C#中执行POST。 API在服务器上具有普通HTTP和安全层(HTTPS)PORT。 当我调用HTTP URL时,它完全正常。 但是,当我调用HTTPS时,它会给我超时exception(在GetRequestStream()函数中)。 任何见解? 我正在使用VS 2010,.Net framework 3.5和C#。 这是代码块: string json_value = jsonSerializer.Serialize(data); HttpWebRequest request = (HttpWebRequest)System.Net.WebRequest.Create(“https://server-url-xxxx.com”); request.Method = “POST”; request.ProtocolVersion = System.Net.HttpVersion.Version10; request.ContentType = “application/x-www-form-urlencoded”; byte[] buffer = Encoding.ASCII.GetBytes(json_value); request.ContentLength = buffer.Length; System.IO.Stream reqStream = request.GetRequestStream(); reqStream.Write(buffer, 0, buffer.Length); reqStream.Close(); 编辑:彼得建议的控制台程序工作正常。 但是当我添加需要发布到API的数据(以JSON格式)时,它会抛出操作超时exception。 这是我添加到基于控制台的应用程序的代码,它会抛出错误。 byte[] buffer = Encoding.ASCII.GetBytes(json_value); request.ContentLength = buffer.Length;

获取没有非标准端口的原始URL(C#)

第一个问题! 环境 MVC,C#,AppHarbor。 问题 我正在调用openid提供程序,并根据域生成绝对回调URL。 在我的本地机器上,如果我点击http://localhost:12345/login ,这可以正常工作 Request.Url; //gives me `http://localhost:12345/callback` 但是,在我正在部署的AppHarbor上,因为他们正在使用非标准端口,即使我在“ http://sub.example.com/login ”上点击它 Request.Url; //gives me http://sub.example.com:15232/callback 这搞砸了我的回调,因为端口号不在原始源URL中! 我试过了 Request.Url Request.Url.OriginalString Request.RawUrl 所有这些都给了我“ http://sub.example.com:15232/callback ”。 另外要清除这不是一个Realm问题,我从DotNetOpenAuth得到的错误信息是 ‘http://sub.example.com:14107/accounts/openidcallback’ not under realm ‘http://*.example.com/’. 我不觉得我塞满了吗? 现在,我要考虑一些像hacky这样的东西 预处理器命令(#IF DEBUG THEN PUT PORT) string replace(Request.URL.Contains(“localhost”)) 所有这些都不是100%的解决方案,但我厌倦了仔细考虑可能是一个我不想要的简单财产。 我也读过这个,但似乎没有一个公认的答案(更多的是关于路径而不是权威)。 所以我把它给你们。 摘要 所以,如果我有http://localhost:12345/login ,我需要从Request上下文获取http://localhost:12345/callback 。 如果我有“ http://sub.example.com/login ”,我应该得到“ http://sub.example.com/callback ”,无论它在哪个端口。 谢谢! (睡觉时间,早上会回答任何问题)