2

背景

我有一个 ASP.NET 站点,在我们公司的 Intranet 服务器内部托管。该站点使用客户端的默认网络凭据进行身份验证。该站点的主页Default.aspx包含以下 Web 方法,可将一些数据从 Oracle 服务器同步到 MS SQL 服务器:

<WebMethod()> _
Public Shared Sub syncOracle()        
    OracleSync.MainSync()
End Sub

当我从网站本身(例如从页面上的按钮或其他东西)访问该网络方法时,它可以正常工作并按预期执行。

问题

我想在服务器上设置一个定期调用此方法的计划任务。到目前为止,我的方法是在 VB 中编写一个简单的控制台脚本,该脚本将通过以下方式访问 Web 方法HTTPWebRequest

Sub Main()
    Dim myReq As HttpWebRequest = _
       WebRequest.Create("http://vm-prod1/dev/default.aspx/syncOracle")
    myReq.Credentials = CredentialCache.DefaultNetworkCredentials
    myReq.Method = "POST"
    myReq.ContentLength = 0

    Dim response As HttpWebResponse = CType(myReq.GetResponse(), HttpWebResponse)

    Console.WriteLine(response.StatusCode)

    Console.ReadKey()
End Sub

这将返回 200 的“OK”状态,但是当我解析实际响应时,我没有得到从页面访问方法时得到的响应(相反,我得到了整个 aspx 页面的代码)。并且同步没有触发。

问题

是否有人对更好/不同的方法(可能不使用 HttpWebRequests)或对我当前可能效果更好的方法的修改有任何见解?先感谢您!

4

1 回答 1

1

到目前为止,您可以做的最简单的事情是删除页面方法并切换到使用简单的通用处理程序。

使用通用处理程序,您没有所有标准的 Web 表单页面生命周期,而是为您提供了一种非常灵活和简单的方式来运行您所描述的处理。

因此,我将在项目中添加一个通用处理程序 (.ashx) 文件。将代码放入您需要运行的代码中。然后只需从控制台脚本执行页面。

于 2012-05-08T22:26:30.867 回答