【问题标题】:HttpWebResponse: Windows service vs. console applicationHttpWebResponse:Windows 服务与控制台应用程序
【发布时间】:2011-10-11 09:31:18
【问题描述】:

我有一个问题两天没能解决。

在控制台应用程序中,此代码可以正常工作:

url="http://www.reuters.com/finance/currencies/quote?srcAmt=1.00&srcCurr=USD&destAmt=&destCurr=ASD&historicalDate=MMddyyyy"
HttpWebRequest req = WebRequest.Create(url) as HttpWebRequest;
req.Timeout = 3000000;

using (HttpWebResponse resp = req.GetResponse() as HttpWebResponse)
{
   // ...
}

但在我的 Windows 服务中,GetResponse() 抛出异常“无法解析远程名称:'www.reuters.com'”。

我不知道我做错了什么,也许我在ServiceInstaller中设置了错误。

感谢您向我展示正确的轨道,但还有一个问题。

我正在使用虚拟机(我有管理员权限,但我完全没有管理经验)。

如果我在服务安装程序中为用户设置帐户(并提供我的登录详细信息),那么我与数据库 (Odbc) 的连接有问题。连接打开抛出我:

ERROR [08001] [MERANT][ODBC Sybase driver]
Allocation of a Sybase Open Client Context failed.  
Sybase normally generates a SYBINIT.ERR file containing more specific reasons for failing.\r\n
ERROR [01S00] [MERANT][ODBC Sybase driver]
Invalid attribute in connection string: Port.

因此,如果在ServiceInstaller 中设置帐户用户,我将无法连接到数据库,否则如果我将帐户设置为 LocalSystem,我可以打开与数据库的连接,但我无法使用GetResponse()

所以问题是,当一切都放在 Windows 终端服务器上时,我该怎么办?

我认为管理员权限可能有问题。我能做些什么来解决这个问题?再次感谢。

【问题讨论】:

    标签: c# windows-services console-application httpwebresponse getresponse


    【解决方案1】:

    Windows Service 应用程序默认在 LocalSystem 帐户下运行,而您的控制台应用程序在您的用户帐户下运行,因此您可能会遇到权限问题(Windows 防火墙?)

    您应该在管理员帐户下运行该服务,看看这是否可以解决您的问题。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2011-01-10
      • 2010-11-04
      • 2014-01-02
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2012-05-15
      相关资源
      最近更新 更多