我目前正在创建一个MVC应用程序,该应用程序当前从webhook的帖子中获取值。我认为问题在于应用程序从POST动词中获取值,但之后它没有显示它,因为Get动词用于显示视图,因此两个动词都相互作用。
webhook将成功激活A Json有效负载到我的应用程序,因为我有代码,它会通过电子邮件将变量中的Json有效负载发送到我的电子邮件帐户。
Dim body = issue.issue.key
mail.Body = body
这是一个try catch块,因为为了让它有一个值,它必须有一个值,应用程序将首先执行GET,所以在体变量中有一个空值,然后它执行POST以获取值但它不会显示该值,刷新将只执行GET以防止它被显示。如何同时执行这两个操作,以便我可以在ViewBag中显示一个值。
ViewBag.response = status + key
这是我想要尝试修复错误的结构类型,但我不知道如何完成所有步骤:
这是我到目前为止所得到的:
POST是从webhook进来的,我正在读这个。
Dim reader As System.IO.StreamReader = New System.IO.StreamReader(HttpContext.Request.InputStream)
Dim rawSendGridJSON As String = reader.ReadToEnd()
Dim tempVar As Rootobject = JsonConvert.DeserializeObject(Of Rootobject)(rawSendGridJSON)
System.Diagnostics.Trace.TraceError(rawSendGridJSON)
然后我尝试将post值存储在这样的表中:
Public Function CallBack(tempTable as temporaryTable)
Dim tempVar As Rootobject = JsonConvert.DeserializeObject(Of Rootobject)(rawSendGridJSON)
tempVar = temporaryTable.tempVar
然后我将新项保存在数据库的实际表中,然后我尝试在另一页的视图中显示它。这不能正常工作,问题在于这一行,因为帖子没有在正确的时间正确读入。 (该值正在正确处理,因为我可以使用电子邮件方法将电子邮件中的变量发送回应用程序,但此应用程序需要是实时高效的代码)。
有没有更好的方法来使用此方法?如何调用我想要正确执行的此过程以便我可以显示正确的信息?
更新
为了澄清,有两个帖子正在发生,第一个是用户输入信息并提交信息。然后将其存储在数据库中并通过电子邮件发送给JIRA。一旦JIRA收到信息,它就会将HTTP POST webhook JSON Payload发送回我的应用程序并提供更新的信息。然后,我将JSON Payload反序列化为名为 issueKey 的变量。
问题是,在发送信息的View页面上,在将值发送给它之前会先自动显示空值,我希望应用程序能够正常工作,以便它实际显示/存储在数据库中来自Webhook JSON Payload的值,但我无法弄清楚如何显示值。
我现在已经建立了一个从SignalR到我的MVC应用程序的通信通道,当时MVC正在接收它,我在我的MVC应用程序中设置了一个SignalR聊天中心,但我不知道如何整合它们,如何做到这一点?
答案 0 :(得分:1)
据我了解,这里有两个流程。用户发布数据,这会触发向Jira发送电子邮件。然后一段时间后(通常非常快,但并非总是如此)JIRA在Web应用程序中触发webhook并提供一些更新的信息,并且您希望以某种方式向用户显示此更新的信息,或者至少在更新的信息返回时通知用户来自JIRA。
我会为用户启动的部分实现标准的Post-Redirect-Get(根据br4d的评论)。即一个帖子,用于将数据存储在数据库中并向jira发送电子邮件,jira返回重定向到get,显示存储在数据库中的数据。
现在,对于另一部分,我将使用signalr为用户建立某种通信渠道。然后,webook可以通过通信通道向用户浏览器发送信号(各种类型)并显示数据,或触发刷新页面(如果您使用Jira中的数据更新数据库)。
目前还不清楚你是在做straigt mvc,还是某种SPA应用,但这并不重要。用户浏览器无法知道webhook(这是web应用程序的一部分,与用户会话无关),并且您需要在Web应用程序和浏览器之间进行某种通信,并且对于此信号器非常好。