【问题标题】:How do I use a SQL CLR Method to call a Webpage?如何使用 SQL CLR 方法调用网页?
【发布时间】:2023-03-12 08:37:01
【问题描述】:

我有一个 asp.net mvc 应用程序需要一段时间才能加载到我的生产服务器上。我想编写一个脚本,每 10 分钟调用一次我的页面,以避免页面在服务器上被报废,然后导致服务器重新加载它们。

我正在考虑使用 SQL Server 存储过程每 10 分钟调用一次我的页面以保持页面活动。

我已经读到我可以使用 CLR 来做到这一点,但我不确定如何。有没有人有如何使用 CLR 在 SQL 存储过程中调用网页的示例?

【问题讨论】:

    标签: asp.net sql sql-server-2005 sqlclr


    【解决方案1】:

    我不知道您为什么要为此使用存储过程。

    只需编写一个简单的控制台应用程序来“调用”页面。然后使用计划任务运行控制台应用程序。

    【讨论】:

    • 我继续构建了一个 Windows 服务应用程序来执行此操作。
    【解决方案2】:

    代码未经测试,但这样的东西应该可以工作。

    您可能还需要值得信赖的套装。

    ALTER DATABASE Foo SET TRUSTWORTHY ON;
    

    代码:

    public partial class WebProc
    {
       [SqlFunction()]
       public static string WebQuery()
       {
          WebRequest request = HttpWebRequest.Create("http://www.google.com");
          WebResponse response = request.GetResponse();
          Stream dataStream = response.GetResponseStream();
          StreamReader reader = new StreamReader (dataStream);
          string responseFromServer = reader.ReadToEnd();
          return responseFromServer;
       }
    }
    

    【讨论】:

    • -1:尤其是在 SQL Server 内部,我认为您最好将 response、dataStream 和 reader 放在 using 块中。
    • @约翰。当然可以使代码安全。这只是为了说明“我如何”的问题。因为我没有回答“我应该提问”。
    • 太多的开发人员复制/粘贴他们在 SO 和其他地方看到的内容。修复代码,我将删除downvote。
    【解决方案3】:

    我不知道您为什么要为此使用存储过程。

    只需编写一个简单的控制台应用程序来“调用”页面。然后使用计划任务运行控制台应用程序。

    可以这样做(当然)但这不是问题要问的;)

    Jafin 对这个问题的回答是正确的。

    最佳答案(恕我直言)是修复您的生产服务器(即重新配置设置),使其不会每 10 分钟“报废”您的页面。

    为什么要使用手提钻(控制台应用程序或数据库中的 .net 或其他),而普通手提钻也可以?

    【讨论】:

      猜你喜欢
      • 2019-02-22
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2017-02-27
      • 1970-01-01
      • 2017-01-17
      • 1970-01-01
      相关资源
      最近更新 更多