【发布时间】:2012-10-03 22:13:19
【问题描述】:
我现在花了很多时间配置我的代理。目前,我使用一项名为 proxybonanza 的服务。他们为我提供了一个代理,我用它来获取网页。
我正在使用 HTMLAGILITYPACK
现在,如果我在没有代理的情况下运行我的代码,则在本地或上传到 webhost 服务器时没有问题。
如果我决定使用代理,它需要更长的时间,但它仍然可以在本地工作。
If I publish my solution to, to my webhost I get a SocketException (0x274c)
"A connection attempt failed because the connected party did not properly respond
after a period of time, or established connection failed because connected host has
failed to respond 38.69.197.71:45623"
我已经调试了很长时间了。
我的 app.config 有两个与此相关的条目
httpWebRequest useUnsafeHeaderParsing="true"
httpRuntime executionTimeout="180"
这帮助我解决了几个问题。
现在这是我的 C# 代码。
HtmlWeb htmlweb = new HtmlWeb();
htmlweb.PreRequest = new HtmlAgilityPack.HtmlWeb.PreRequestHandler(OnPreRequest);
HtmlDocument htmldoc = htmlweb.Load(@"http://www.websitetofetch.com,
"IP", port, "username", "password");
//This is the preRequest config
static bool OnPreRequest(HttpWebRequest request)
{
request.KeepAlive = false;
request.Timeout = 100000;
request.ReadWriteTimeout = 1000000;
request.ProtocolVersion = HttpVersion.Version10;
return true; // ok, go on
}
我做错了什么?我在 appconfig 中启用了跟踪器,但我的虚拟主机上没有日志...?
Log stuff from app.config
<system.diagnostics>
<sources>
<source name="System.ServiceModel.MessageLogging" switchValue="Warning, ActivityTracing" >
<listeners>
<add name="ServiceModelTraceListener"/>
</listeners>
</source>
<source name="System.ServiceModel" switchValue="Verbose,ActivityTracing">
<listeners>
<add name="ServiceModelTraceListener"/>
</listeners>
</source>
<source name="System.Runtime.Serialization" switchValue="Verbose,ActivityTracing">
<listeners>
<add name="ServiceModelTraceListener"/>
</listeners>
</source>
</sources>
<sharedListeners>
<add initializeData="App_tracelog.svclog"
type="System.Diagnostics.XmlWriterTraceListener, System, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089"
name="ServiceModelTraceListener" traceOutputOptions="Timestamp"/>
</sharedListeners>
</system.diagnostics>
谁能发现我将这些设置打开和关闭一千次的问题..
request.KeepAlive = false;
System.Net.ServicePointManager.Expect100Continue = false;
卡尔
【问题讨论】:
-
您是否在您的应用配置中允许了网络请求?或者,也许你忘了允许 mimetype?你托管什么样的服务器?
-
@wegginho 我在共享主机上。我没有 VPS,只有一个标准的 asp.net 4.0 平台的虚拟主机帐户。
-
没关系。您可以在 web.config 中执行通常对 IIS 执行的所有设置。细微的差别在于,每次您保存或发布 web.config 时,应用程序都会重新启动。
-
好的..但这对我有什么帮助?我仍然可以从我的虚拟主机通过代理运行吗?
-
我认为问题出在端口号上。防火墙正在阻止对该特定端口的请求。
标签: c# asp.net proxy html-agility-pack