F#catch System.Web.Exception

F#catch System.Web.Exception,f#,f#-data,F#,F# Data,我已经用TickSpec(C#Specflow的F版本)编写了测试web服务的测试。当我运行测试时,我希望响应为200 OK,这一切都很好。当我故意发送一个错误的请求时,我收到一个400错误的请求,但是测试失败了,尽管400是我想要得到的。所以问题是-我如何捕捉异常并在F#中继续 这是我的一段代码: let sendRequest(requestBody : HttpRequestBody) = let response = Http.Request(url, headers = re

我已经用TickSpec(C#Specflow的F版本)编写了测试web服务的测试。当我运行测试时,我希望响应为200 OK,这一切都很好。当我故意发送一个错误的请求时,我收到一个400错误的请求,但是测试失败了,尽管400是我想要得到的。所以问题是-我如何捕捉异常并在F#中继续

这是我的一段代码:

let sendRequest(requestBody : HttpRequestBody) = 
    let response = Http.Request(url, headers = requestHeaders, body = requestBody)
    let responseStatusCode = response.StatusCode
    let extractedResponseData = 
    // code here to extract data from response
(responseStatusCode, extractedResponseData)
我得到的错误是

System.Net.WebException : The remote server returned an error: (400) Bad Request.
我希望能在比赛中试着接球

 let response = Http.Request(url, headers = requestHeaders, body = requestBody)
这将解决问题

我可以这样做吗?我怎么做?

添加:

   silentHttpErrors = true
致:

例如:

 let response = Http.Request(url, headers = requestHeaders, body = requestBody, silentHttpErrors = true)
解决了这个问题。现在,测试忽略System.Net.WebException,我可以测试应用程序与400错误请求相关的行为


更多信息:

您在哪一个特定部分上卡住了?您是否阅读了此处的MSDN页面,通过添加以下位对其进行排序:silenthttperors=true以让response=Http.Request(url,headers=requestHeaders,body=requestBody)。这忽略了错误并继续。@Marta-你可以回答自己的问题,所以:)@DaveShaw-谢谢,我会回答的。
 let response = Http.Request(url, headers = requestHeaders, body = requestBody, silentHttpErrors = true)