Tag: http

HTTPS Web请求失败

当我运行下面包含的程序时,第一个HTTPS请求成功,但第二个请求失败。 两个url都是有效的,并且都可以在浏览器中成功访问。 有关成功访问第二个URL需要做什么的任何建议? using System; using System.IO; using System.Net; public class Program { private static void Main(string[] args) { var content = “”; bool status; var url1 = “https://mail.google.com”; var url2 = “https://my.ooma.com”; status = DoHttpRequest(url1, out content); OutputStatus(url1, status, content); status = DoHttpRequest(url2, out content); OutputStatus(url2, status, content); Console.ReadLine(); } private static void OutputStatus(string […]

在MVC4中访问原始http请求

关于在stackoverflow上访问HttpRequest有很多问题,但是我还没找到一个我可以使用的。 如果有人能指出我的答案,我将不胜感激。 我的问题是我想以最简单的方式修改现有的应用程序,以便添加完整的请求记录。 我知道这可以通过Http模块和IIS日志记录或使用Log4net等来完成。但我不想使用任何这些技术,因为应用程序是不可预测的,所以我需要一个不需要任何配置更改的解决方案一点都不 我已将OnActionExecuted添加到基本控制器。 protected override void OnActionExecuted(ActionExecutedContext filterContext) { // todo: log request from filter context …. base.OnActionExecuted(filterContext); } 在上面的“todo”部分中,我希望阅读原始http请求并将其保存到数据库文件中。 记录到数据库很简单,但序列化或以其他方式将http请求转换为字符串的最佳方法是什么? 谢谢

C#如何强制重用经过身份validation的Http连接?

我无法重复使用我的Http连接。 HttpWebRequest.KeepAlive设置没有区别。 我发现这篇文章说如果你有NTLM身份validation,那么使用UnsafeAuthenticatedConnectionSharing = true。 所以我将它设置为true并且仍然具有相同的TCP连接群,并且没有类似于重用.. 有什么想法吗? 对不起,我不知道什么是pastebin。 这是日志的片段我做了2次调用服务。 出于某种原因的第一次呼叫是在没有身份validation的情 响应是未授权和连接:关闭。 然后它由系统重新提交,但不再保持活动状态,响应正常,但仍然是Connection:Close。 不幸的是,出于安全原因,我无法粘贴整个日志。 System.Net Information: 0 : [5988] Associating HttpWebRequest#64923656 with ConnectStream#51393439 System.Net Information: 0 : [5988] HttpWebRequest#64923656 – Request: GET /v1.0/xxxxxx/xxxx/ HTTP/1.1 System.Net.Sockets Verbose: 0 : [5988] Socket#52727599::Send() System.Net.Sockets Verbose: 0 : [5988] Data from Socket#52727599::Send System.Net.Sockets Verbose: 0 : [5988] 00000000 : … […]

Mac OS X上的Mono – 并行HTTP下载限制为2

我正在使用Mono开发一个可以同时下载多个文件的程序(适用于Mac OS X和Debian)。 但是我只能同时下载2个文件,尽管我使用构造函数new RollingDownload(10) 。 我正在使用的代码就是这个 using System; using System.Collections.Generic; using System.Collections.Concurrent; using System.Threading; using System.Net; using System.Diagnostics; using System.IO; namespace worker { public class RollingDownload { private static ConcurrentQueue _downloads = new ConcurrentQueue(); private static short _NumberOfThreads; private static short DefaultTimeoutSeconds = 20; public RollingDownload (short NumberOfThreads) { _NumberOfThreads = NumberOfThreads; } public […]

ASP.NET MVC在发送状态为500的响应时显示错误页面

我在服务器中有以下操作: [HttpPost] public JsonResult SearchContracts(SearchViewModel vm) { List errors; if (IsValid(vm, out errors)) { return Json(service.Search(vm), JsonRequestBehavior.AllowGet); } else { HttpContext.Response.StatusCode = 500; return Json(new { Errors = errors }, JsonRequestBehavior.AllowGet); } } 在本地,它很棒。 当请求无效时,它返回带有错误的JSON,并且响应的HTTP状态代码为500 。 部署后,IIS将返回我这个着名的错误页面 ,而不是所描述的JSON。 这是web.config ,其中包含customErrors部分的详细信息: 我试过把它变成On但是都没有用。 我应该在哪里更改以停止接收那个丑陋的错误页面而不是我的美丽JSON? 编辑: 我将状态代码更改为400 ,现在我将文本Bad Request作为响应,而不是JSON:

401使用HttpWebRequest进行POST时(是的,我使用了Credentials)

我正在使用HttpWebRequest来下载XML,并将数据POST回“WebService”并在POST上获得401。 在创建请求时,我添加了凭据,现在尝试了凭据缓存并将PreAutenticate设置为True,仍然获得401! 🙁 观察路由器上的HTTP流量我设置get make一个未经身份validation的GET请求..它命中401然后进行经过身份validation的GET并被允许通过。 当我观看POST时,我看到它点击了401 ……它甚至没有尝试经过身份validation的POST。 这只出现在手机上(WinMobile 6.1上的compact-framework 3.5和2.0)。 相同的.exe在任何台式机上都能完美运行。 我错过了什么? 请帮忙!

在C#中编写“原始”HTTP客户端

我正在尝试用C#编写一个“原始”HTTP客户端。 你可能会问为什么? 我的目标是在J2ME中实现HTTP客户端(它只能执行GET和有限的POST),但首先我需要更好地理解HTTP协议(因此C#尝试)。 我的第一次尝试失败了: var requestBytes = Encoding.UTF8.GetBytes(@”GET / HTTP/1.1 User-Agent: CSharp Host: www.google.com “); var socket = new Socket(AddressFamily.InterNetwork, SocketType.Stream, ProtocolType.Tcp); socket.Connect(“www.google.com”, 80); socket.Send(requestBytes); var responseBytes = new byte[socket.ReceiveBufferSize]; socket.Receive(responseBytes); Console.Out.Write(Encoding.UTF8.GetString(responseBytes)); 套接字打开,但随后在接收呼叫时阻塞。 几秒钟后,远程主机关闭连接。 有任何想法吗? 当我尝试使用puTTY中的RAW模式进行连接时,会发生同样的情况。

在C#中处理非validationSSL证书的最佳方法是什么?

我正在使用以下代码来确保所有证书都通过,甚至是无效证书,但我想知道是否有更好的方法,因为这个事件被全局调用,我只希望证书通过某个HTTP调用而不是任何其他异步发生的事情。 // This delegate makes sure that non-validating SSL certificates are passed ServicePointManager.ServerCertificateValidationCallback = delegate(object certsender, X509Certificate cert, X509Chain chain, System.Net.Security.SslPolicyErrors error) { return true; }; 上面的代码只是忽略证书上任何非validation的一个例子。 我遇到的问题是它是一个全球性的事件。 我无法看到事件发生的会话。 我可能会有几个http请求通过,我想要求用户为每个请求执行操作 。

嵌入式C#Web服务器,支持简单的SSL

我正在寻找具有开箱即用SSL支持的嵌入式Web服务器,最好是从命令行或一些简单配置配置,而无需更改系统范围的配置(如Registry)。 它也适用于单声道。

在会话结束时或在特定时间过期cookie?

是否可以在会话结束时或特定时间使cookie过期?