我正在使用C#(.NET3.5 Compact Framework)开发应用程序,我需要偶尔通过GPRS连接到SQL服务器。但是,在一段时间不活动或PDA放在支架上后,连接会关闭。
我正在寻找一种从应用程序自动检查并重新启用连接的方法。
我在Web上看到过几个页面,建议使用ConnectionManager,Opennet.CF框架或基于XML doc的方法。没有提供完整的例子。
我的最新测试基于以下代码。
你能帮我提一些建议或一段代码吗?
非常感谢,
菲利普
public static void setCM_ProxyEntriesHTTP(Guid Guid)
{
try
{
remCM_ProxyEntries(getCM_ProxyEntriesAtual());
string wWap = "<wap-provisioningdoc>" +
"<characteristic type=\"CM_ProxyEntries\">" +
"<characteristic type=\"HTTP-{" + Guid.ToString() + "}\">" +
"<parm name=\"ExtraInfo\" value=\"\" />" +
"<parm name=\"Override\" value=\"\" />" +
"<parm name=\"Username\" value=\"\" />" +
"<parm name=\"Enable\" value=\"1\" />" +
"<parm name=\"Type\" value=\"0\" />" +
"<parm name=\"DestId\" value=\"{436EF144-B4FB-4863-A041-8F905A62C572}\" />" +
"<parm name=\"SrcId\" value=\"{" + Guid.ToString() + "}\" />" +
"</characteristic>" +
"</characteristic>" +
"</wap-provisioningdoc>";
ConfigWrapper.ProcessXml(wWap);
}
catch { }
}
答案 0 :(得分:0)
通常,只要您的请求触发连接管理器,您就不需要关心连接。因此,在执行SQL查询或连接之前,请在已知的可访问服务器上执行http请求。该http请求将触发连接管理器打开连接。连接管理器将管理连接。
如果没有数据流动较长时间,连接管理器(CM)将关闭连接,除非您配置了&#34;始终开启&#34;连接。 &#39; Alwas on&#39;可以使用wap provisioning xml文件配置连接。你写的一个类似的xml(这对你的需求毫无用处):http://msdn.microsoft.com/en-us/library/bb737329.aspx
在我使用ftp编写的应用程序中需要触发CM的技巧。在打开ftp连接之前,我不得不做一个http请求(到google.com)。 FTP连接请求不会触发CM,因为sql请求也不会。
因此,在您的代码中首先执行http请求并等待或重复直到成功,然后发出您的sql连接请求。 -要么- 配置始终开启&#39;连接(如果您与您的互联网提供商签订了固定数据费率合同)。
答案 1 :(得分:0)
谢谢josef! :)
我可以使用以下代码检查和连接:
private static bool InternetAvailable2()
{
bool hasNet = false;
try
{
HttpWebRequest request = (HttpWebRequest)WebRequest.Create(@"http://www.bing.com");
request.Method = "GET";
request.Accept = "text/html, application/xhtml+xml, */*";
request.Proxy = null;
//request.UserAgent = "Mozilla/5.0 (compatible; MSIE 9.0; Windows NT 6.1; Trident/5.0)";
using (HttpWebResponse response = (HttpWebResponse)request.GetResponse())
{
if (response.StatusCode == HttpStatusCode.OK)
{
hasNet = true;
}
}
}
catch (Exception ex)
{
MessageBox.Show(ex.Message,"NetAvail2");
}
}