0
我是新的.Net(任何帮助将不胜感激),我试图实现这个类写入休息api。它所做的只是传入一些数据并为该服务执行postAsJsonAsync。它是用C#编写的,并转换为VB.net以添加到VB.net应用程序解决方案中。 它工作一次,然后第二次调用失败,当它初始化Uri的另一个实例。 抛出的异常:System.Net.Http.dllequest中的'System.InvalidOperationException'。“} {”该实例已经启动了一个或多个请求。属性只能发送第一个请求之前修改“} 代码在这里:我在做什么错,叫一个休息api
Imports System.Collections.Generic
Imports System.Configuration
Imports System.Linq
Imports System.Text
Imports System.Threading.Tasks
Imports System.Net.Http
Imports System.Net.Http.Headers
Namespace Logging
Public Class LogMessage
Public Property Application As String
Public Property Area As String
Public Property Activity As String
Public Property Description As String
Public Property User As String
End Class
Public Class ActionLogging
Public Shared Client As New HttpClient()
Public Shared Function AddToActionLog(Activity As String, Description As String, User As String)
Dim message = New LogMessage() With { _
.Activity = Activity, _
.Description = Description, _
.User = User, _
.Application = ConfigurationManager.AppSettings("Application"), _
.Area = ConfigurationManager.AppSettings("Area") _
}
If Run(message) IsNot Nothing
Run(message).Wait()
End If
End Function
Public Shared Function CreateMessage(message As LogMessage) As Uri
Dim task = Client.PostAsJsonAsync("Action", message)
task.Wait()
Dim response As HttpResponseMessage = task.Result
response.EnsureSuccessStatusCode()
Return response.Headers.Location
End Function
Public Shared Function Run(message As LogMessage) As Task
Client.BaseAddress = new Uri(ConfigurationManager.AppSettings("RestAPIServer"))
Client.DefaultRequestHeaders.Accept.Clear()
Client.DefaultRequestHeaders.Accept.Add(New MediaTypeWithQualityHeaderValue("application/json"))
CreateMessage(message)
End Function
End Class
End Namespace
什么异常的一部分,目前尚不清楚你做什么里面'的run()'只能在发送之前做了什么?第一个请求 – CodeCaster
是的,我明白这个例外,我不知道如何设置'DefaultRequestHeaders'只有一次,这个类会在同一个会话中多次调用,我做这些调用的方式显然是错误的,但是我不能请参阅如何以不同方式执行此操作 –
找到了合适的解决方案,希望这可以帮助未来的其他人 –