【问题标题】:Refreshing Web.Config file in asp.net在 asp.net 中刷新 Web.Config 文件
【发布时间】:2013-05-30 02:44:47
【问题描述】:

我在我的一个站点中使用 UrlRewriting 模块,该站点有 2 个版本:

  1. 桌面
  2. 手机

网站的移动版代码仅存在于桌面版中,即如果桌面版位于c:\websites\[websitename],则移动版网站将为c:\websites\[websitename]\mobile

现在我有一个从 UI 到 add/modify/deletevanity url's 的实用程序,所以对于 vanity url's,我创建了一个名为 url.config 的单独文件并将其链接到 rewrite 节点下的 web.config 文件.每当添加任何新的虚荣心时,我都会更新数据库,然后从数据库中更新整个 url.config 文件并刷新 web.config

Web.config 刷新已经完成

Public Sub RefreshWebConfig()
    Dim doc As New XmlDocument()
    doc.Load(HttpContext.Current.Server.MapPath("web.config"))
    doc.Save(HttpContext.Current.Server.MapPath("web.config"))
 End Sub

上面的代码按预期工作,它刷新了web.config 文件,因此添加的虚荣当场生效。

现在我的客户要求将桌面版添加的梳妆台同时更新到移动版。所以现在我正在做的是我在mobile\urls.config 下创建了一个单独的文件,并链接到mobile\ web.config 文件,与桌面版本相同。

现在我正在使用下面的代码来刷新 mobile\web.config 文件,如下所示:

Public Sub RefreshWebConfig()
   Dim doc As New XmlDocument()
   doc.Load(HttpContext.Current.Server.MapPath("web.config"))
   doc.Save(HttpContext.Current.Server.MapPath("web.config"))
   Dim doc1 As New XmlDocument()
   doc1.Load(HttpContext.Current.Server.MapPath("~/mobile/web.config"))
   doc1.Save(HttpContext.Current.Server.MapPath("~/mobile/web.config"))
End Sub

但是,它不会使用上面的代码刷新mobile\web.config 文件,因为我需要等待5-10mins 左右或有时甚至直到20mins 才能使更改反映在移动站点上。

谁能告诉我是什么导致了这个问题,以及可能的解决方法。

【问题讨论】:

    标签: asp.net url-rewriting web-config refresh


    【解决方案1】:

    我假设您这样做是为了触发应用程序回收,以便您的网站反映您所做的更改?

    据我所知,更改 web.config 将在“某个时间点”触发应用程序回收;并非总是立即发生,特别是如果网站暂时不需要导致触发的文件,在您的情况下,如果用户有一段时间不访问移动页面,则可能不需要您的/mobile/web.config。您会立即看到桌面版本上的更改,因为需要您的根 web.config 才能加载您正在查看的页面。

    如果您这样做是为了回收,为什么不直接回收应用程序而不是触摸web.config

    如果您愿意,您可以通过调用以下命令强制网站重新启动:

    Public Sub RefreshWebConfig()
          HttpRuntime.UnloadAppDomain();
    End Sub
    

    更多信息HttpRuntime.UnLoadAppDomain

    【讨论】:

    • 直接回收应用程序池会很酷,但是你能告诉如何回收特定站点的应用程序池吗,我在服务器上有大约 30 个站点...
    • 将该代码放入您的站点 - 它会重新启动该站点,而不是整个服务器。
    • 我还有一个担心,我想回收移动网站的应用程序池,当桌面版本有任何虚荣添加时。当桌面版本中添加任何新的虚荣心时,移动网站应该会自动生效。
    • 据我了解,它们实际上是同一个网站,只是移动/桌面的 URL 不同。因此,每当您更新任何虚 URL 时都运行此代码,并且您应该进行设置 - 桌面和移动设备都将立即更新,因为您的网站将重新启动。为什么不先尝试一下。如果它不起作用,我们可以提供更多帮助.....
    • 不,站点不同,我在 IIS 中有 2 个站点,www.abc.com 和 m.abc.com,无论何时,www.abc.com 应用程序池中都有任何虚荣添加m.abc.com 也应该回收......我想实现这个
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-04-15
    • 2012-09-21
    • 1970-01-01
    • 1970-01-01
    • 2011-07-28
    • 2010-10-05
    相关资源
    最近更新 更多