【问题标题】:How to force update IIS changes in an API?如何强制更新 API 中的 IIS 更改?
【发布时间】:2020-04-27 14:17:13
【问题描述】:

我有一个包含一些 WebApi 2 的 WebApp,该 WebApp 发布在运行 IIS 的服务器上。

当我向 WebApp 添加新内容时,更新工作正常并且所有内容都正确提供,但现在我刚刚对现有 API 进行了更新,并且该 API 只是不返回任何内容,因为 API 仍然需要旧参数..

我已经尝试删除以下网站的/Microsoft.NET/FrameworkFramework64临时文件夹中的缓存文件,但没有任何效果..

那么如何强制 IIS 更新我的 WebApp?

我更改的 API 方法如下:

<HttpPost()>
<Route("rc")>
Public Function RepartiCassa(<FromBody()> ByVal where As ModelConfig.Config) As IEnumerable(Of Reparti)
    Dim re = Request
    Dim headers = re.Headers
    Dim piva As String = ""

    If headers.Contains("authToken") Then
        Dim token As String = headers.GetValues("authToken").First()
        Dim data = TokenManager.Principals(TokenManager.GetPrincipal(token))
        If data Is Nothing Then Return New HttpResponseMessage(HttpStatusCode.Unauthorized)

        piva = data.piva
    End If

    Dim modelConfig As ModelConfig = New ModelConfig

    Dim rep As Reparti = New Reparti
    Return rep.TotaliRepCassa(where.data.inizio, where.data.fine, modelConfig.QueryParametri(where.config, "TRC", False), piva)
End Function

虽然在旧版本中看起来如下

<HttpPost()>
<Route("rc")>
Public Function RepartiCassa(<FromBody()> ByVal where As ModelConfig.Config) As IEnumerable(Of RepCassa)
    Dim re = Request
    Dim headers = re.Headers
    Dim piva As String = ""

    If headers.Contains("authToken") Then
        Dim token As String = headers.GetValues("authToken").First()
        Dim data = TokenManager.Principals(TokenManager.GetPrincipal(token))
        If data Is Nothing Then Return New HttpResponseMessage(HttpStatusCode.Unauthorized)

        piva = data.piva
    End If

    Dim modelConfig As ModelConfig = New ModelConfig

    Dim repCassa As RepCassa = New RepCassa
    Return repCassa.TotaliRepCassa(where.data.inizio, where.data.fine, modelConfig.QueryParametri(where.config, "TRC", False), piva)
End Function

一切都变了,模型是 RepCassa 变成 Reparti

【问题讨论】:

  • 您是否尝试过重启应用程序池?因为部署IIS不会刷新应用程序,还需要回收应用程序池来刷新复杂度。
  • @JokiesDing 我怎样才能重新启动应用程序池? (ps:实际上几个小时后它会自动更新,但无论如何手动刷新它会很酷)
  • blogs.iis.net/msdeploy/… 这是一篇关于如何部署和回收应用程序池的文档。
  • @JokiesDing 是的,实际上就是这样,甚至可以在 IIS 中右键单击应用程序池并按回收,做出答案以便我接受它

标签: .net iis asp.net-web-api2


【解决方案1】:

IIS 中的更新项目不会更新应用程序池设置,因此不会触发应用程序池回收。

请尝试手动回收应用程序池或在更新项目 web 部署时回收应用程序池。

https://blogs.iis.net/msdeploy/operations-on-application-pools-as-admin-and-non-admin

【讨论】:

    【解决方案2】:

    如果您在添加功能时看到更改,那么这很可能是您的代码而不是 IIS 的问题。我猜你的路由配置需要更新。

    【讨论】:

    • 实际上,如果我在我的 PC 上调试 web 应用程序,更新后的 API 会提供它应该提供的所有内容..
    猜你喜欢
    • 2020-06-11
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-05-29
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多