asp.net – 如何将HttpRequestBase转换为HttpRequestMessage,考虑标题名称?
发布时间:2020-05-24 09:36:05 所属栏目:asp.Net 来源:互联网
导读:我将HttpRequestBase包装为HttpRequestMessage,它需要复制所有标头.但由于HttpRequestMessage特别关于哪些头应用于请求对象与Content对象,因此下面的httpRequest.Headers.Add行有时会抛出InvalidOperationException. public static HttpRequestMessage AsHttp
|
我将HttpRequestBase包装为HttpRequestMessage,它需要复制所有标头.但由于HttpRequestMessage特别关于哪些头应用于请求对象与Content对象,因此下面的httpRequest.Headers.Add行有时会抛出InvalidOperationException. public static HttpRequestMessage AsHttpRequestMessage(this HttpRequestBase request) {
Requires.NotNull(request,"request");
var httpRequest = new HttpRequestMessage(new HttpMethod(request.HttpMethod),request.Url);
foreach (string header in request.Headers) {
httpRequest.Headers.Add(header,request.Headers.GetValues(header));
}
if (request.Form != null) {
// Avoid a request message that will try to read the request stream twice for already parsed data.
httpRequest.Content = new FormUrlEncodedContent(request.Form.AsKeyValuePairs());
} else if (request.InputStream != null) {
httpRequest.Content = new StreamContent(request.InputStream);
}
return httpRequest;
}
显然,我希望我的代码不会抛出异常,而是将每个标头适当地应用于适当的对象.我怎么预测呢?我是否可以使用任何方法来测试标题的适用性,而不是生成和捕获异常的标题? 解决方法事实证明这很简单.这个片段的灵感源自 ASP.NET’s own open sourced source code./// <summary>
/// Clones an <see cref="HttpWebRequest" /> in order to send it again.
/// </summary>
/// <param name="message">The message to set headers on.</param>
/// <param name="request">The request with headers to clone.</param>
internal static void CopyHeadersFrom(this HttpRequestMessage message,HttpRequestBase request) {
Requires.NotNull(request,"request");
Requires.NotNull(message,"message");
foreach (string headerName in request.Headers) {
string[] headerValues = request.Headers.GetValues(headerName);
if (!message.Headers.TryAddWithoutValidation(headerName,headerValues)) {
message.Content.Headers.TryAddWithoutValidation(headerName,headerValues);
}
}
} (编辑:安卓应用网) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |
相关内容
- ASP.NET批量下载文件的方法
- asp.net – 将linq查询结果转换为datatable C#
- 从未调用ASP.NET Web API自定义JsonConverter
- asp.net-mvc – MVC4应用程序“无法加载DLL’libmp3lame.32
- asp.net-mvc – MVC – 编辑对象列表
- asp.net – 如何获得Url.Action使用正确的端口号?
- asp.net-mvc – 部署的ASP.NET MVC 4项目不会运行
- asp.net中的泛型处理程序是什么?
- asp.net-mvc – MVC HandleError过滤器没有捕获异常
- asp.net-mvc – 如何在razor视图中公开全局对象像@User?
推荐文章
站长推荐
- asp.net-mvc – Ajax Request返回HTTP错误500,使
- WebApi ASP.NET身份Facebook登录
- asp.net – 是否可以更改web.config而不会终止所
- asp.net-mvc – ASP.NET MVC 3:如何强制ActionL
- asp.net-mvc – MVC Razor String Concat
- asp.net-mvc – requestValidationMode =“2.0”
- asp.net – 应用程序池循环如何影响ASP Net会话状
- asp.net-web-api – 如何设置Elmah与ASP.NET Web
- asp.net-mvc – 获取Web层之外的当前Principal
- asp.net-web-api – ASP.NET Web API – 404删除
热点阅读
