.NET 常用内置对象详解:写更健壮、可维护代码的关键

MediaTypeNames 类

官网地址,https://learn.microsoft.com/zh-cn/dotnet/api/system.net.mime.mediatypenames?view=net-9.0

定义

  • 命名空间: System.Net.Mime
  • 程序集: System.Net.Mail.dll

指定电子邮件附件的媒体类型信息。

public static class MediaTypeNames

继承 Object —> MediaTypeNames

适用于

产品版本
.NETCore 2.0, Core 2.1, Core 2.2, Core 3.0, Core 3.1, 5, 6, 7, 8, 9
.NET Framework2.0, 3.0, 3.5, 4.0, 4.5, 4.5.1, 4.5.2, 4.6, 4.6.1, 4.6.2, 4.7, 4.7.1, 4.7.2, 4.8, 4.8.1
.NET Standard2.0, 2.1

说明

以下是 MediaTypeNames 类中各个字段、说明、值和描述的整理表格:

类别字段名称描述
ApplicationFormUrlEncodedapplication/x-www-form-urlencodedURL 编码的键值对数据。
XmlDtdapplication/xml-dtdXML 文档类型定义格式的数据。
Xmlapplication/xmlXML 格式的数据。
Wasmapplication/wasmWASM(WebAssembly)格式的数据。
Soapapplication/soap+xmlSOAP 文档。
Rtfapplication/rtf富文本格式 (RTF) 的数据。
ProblemXmlapplication/problem+xmlXML 问题详情格式的数据。
XmlPatchapplication/xml-patch+xmlXML 补丁格式的数据。
ProblemJsonapplication/problem+jsonJSON 问题详情格式的数据。
Octetapplication/octet-stream未解释的二进制数据。
Manifestapplication/manifest+jsonWeb 应用程序清单格式的数据。
JsonSequenceapplication/json-seqJSON 文本序列格式的数据。
JsonPatchapplication/json-patch+jsonJSON 补丁格式的数据。
Jsonapplication/jsonJSON 格式的数据。
GZipapplication/gzipGZIP 压缩格式的数据。
Pdfapplication/pdfPDF(便携文档格式)的数据。
Zipapplication/zipZIP 压缩格式的数据。
FontCollectionfont/collection字体集合格式的字体数据。
Otffont/otfOpenType 布局 (OTF) 格式的字体数据。
Sfntfont/sfntSFNT 格式的字体数据。
Ttffont/ttfTrueType 字体 (TTF) 格式的字体数据。
Wofffont/woffWOFF 格式的字体数据。
Woff2font/woff2WOFF2 格式的字体数据。
ImageAvifimage/avifAVIF 图像格式的数据。
Bmpimage/bmpBMP 图像格式的数据。
Gifimage/gifGIF(图形交换格式)图像数据。
Iconimage/x-iconICO 图标格式的数据。
Jpegimage/jpegJPEG 图像格式的数据。
Pngimage/pngPNG 图像格式的数据。
Svgimage/svg+xmlSVG(可缩放矢量图形)格式的数据。
Tiffimage/tiffTIFF(标签图像文件格式)的数据。
Webpimage/webpWebP 图像格式的数据。
MultipartByteRangesmultipart/byteranges包含多个字节范围的数据。
FormDatamultipart/form-data表单数据格式,通常用于上传文件。
Mixedmultipart/mixed混合格式,用于包含多种不同类型的部分。
Relatedmultipart/related相关格式,用于包含相互关联的内容部分。
TextCsstext/cssCSS 格式的文本数据。
Csvtext/csvCSV(逗号分隔值)格式的文本数据。
EventStreamtext/event-stream事件流格式的文本数据,常用于服务器推送事件。
Htmltext/htmlHTML 格式的文本数据。
JavaScripttext/javascriptJavaScript 脚本格式的文本数据。
Markdowntext/markdownMarkdown 格式的文本数据。
Plaintext/plain纯文本格式的数据。
RichTexttext/richtext富文本格式 (RTF) 的文本数据。
Rtftext/rtfRTF(富文本格式)的文本数据。
Xmltext/xmlXML 格式的文本数据。

这个表格涵盖了 MediaTypeNames 中所有类别及其字段的信息,方便查阅和使用。

StatusCodes 类

官网地址,https://learn.microsoft.com/zh-cn/dotnet/api/microsoft.aspnetcore.http.statuscodes?view=aspnetcore-9.0

定义

  • 命名空间: Microsoft.AspNetCore.Http
  • 程序集: Microsoft.AspNetCore.Http.Abstractions.dll
  • Nuget 包: Microsoft.AspNetCore.App.Ref v9.0.2

HTTP 状态代码的常量集合。

public static class StatusCodes

继承 Object —> StatusCodes

注解

状态代码的说明可从 GetReasonPhrase 获取:

Microsoft.AspNetCore.WebUtilities.ReasonPhrases.GetReasonPhrase(Int32)

适用于

产品版本
ASP.NET Core1.0, 1.1, 2.0, 2.1, 2.2, 3.0, 3.1, 5.0, 6.0, 7.0, 8.0, 9.0, 10.0

字段说明

字段名称描述
Status100ContinueHTTP 状态代码 100。
Status101SwitchingProtocolsHTTP 状态代码 101。
Status102ProcessingHTTP 状态代码 102。
Status200OKHTTP 状态代码 200。
Status201CreatedHTTP 状态代码 201。
Status202AcceptedHTTP 状态代码 202。
Status203NonAuthoritativeHTTP 状态代码 203。
Status204NoContentHTTP 状态代码 204。
Status205ResetContentHTTP 状态代码 205。
Status206PartialContentHTTP 状态代码 206。
Status207MultiStatusHTTP 状态代码 207。
Status208AlreadyReportedHTTP 状态代码 208。
Status226IMUsedHTTP 状态代码 226。
Status300MultipleChoicesHTTP 状态代码 300。
Status301MovedPermanentlyHTTP 状态代码 301。
Status302FoundHTTP 状态代码 302。
Status303SeeOtherHTTP 状态代码 303。
Status304NotModifiedHTTP 状态代码 304。
Status305UseProxyHTTP 状态代码 305。
Status306SwitchProxyHTTP 状态代码 306。
Status307TemporaryRedirectHTTP 状态代码 307。
Status308PermanentRedirectHTTP 状态代码 308。
Status400BadRequestHTTP 状态代码 400。
Status401UnauthorizedHTTP 状态代码 401。
Status402PaymentRequiredHTTP 状态代码 402。
Status403ForbiddenHTTP 状态代码 403。
Status404NotFoundHTTP 状态代码 404。
Status405MethodNotAllowedHTTP 状态代码 405。
Status406NotAcceptableHTTP 状态代码 406。
Status407ProxyAuthenticationRequiredHTTP 状态代码 407。
Status408RequestTimeoutHTTP 状态代码 408。
Status409ConflictHTTP 状态代码 409。
Status410GoneHTTP 状态代码 410。
Status411LengthRequiredHTTP 状态代码 411。
Status412PreconditionFailedHTTP 状态代码 412。
Status413PayloadTooLargeHTTP 状态代码 413。
Status413RequestEntityTooLargeHTTP 状态代码 413。
Status414RequestUriTooLongHTTP 状态代码 414。
Status414UriTooLongHTTP 状态代码 414。
Status415UnsupportedMediaTypeHTTP 状态代码 415。
Status416RangeNotSatisfiableHTTP 状态代码 416。
Status416RequestedRangeNotSatisfiableHTTP 状态代码 416。
Status417ExpectationFailedHTTP 状态代码 417。
Status418ImATeapotHTTP 状态代码 418。
Status419AuthenticationTimeoutHTTP 状态代码 419。
Status421MisdirectedRequestHTTP 状态代码 421。
Status422UnprocessableEntityHTTP 状态代码 422。
Status423LockedHTTP 状态代码 423。
Status424FailedDependencyHTTP 状态代码 424。
Status426UpgradeRequiredHTTP 状态代码 426。
Status428PreconditionRequiredHTTP 状态代码 428。
Status429TooManyRequestsHTTP 状态代码 429。
Status431RequestHeaderFieldsTooLargeHTTP 状态代码 431。
Status451UnavailableForLegalReasonsHTTP 状态代码 451。
Status499ClientClosedRequestHTTP 状态代码 499。 这是 Nginx 最初定义的非官方状态代码,通常在客户端断开连接时在日志中使用。
Status500InternalServerErrorHTTP 状态代码 500。
Status501NotImplementedHTTP 状态代码 501。
Status502BadGatewayHTTP 状态代码 502。
Status503ServiceUnavailableHTTP 状态代码 503。
Status504GatewayTimeoutHTTP 状态代码 504。
Status505HttpVersionNotSupportedHTTP 状态代码 505。
Status506VariantAlsoNegotiatesHTTP 状态代码 506。
Status507InsufficientStorageHTTP 状态代码 507。
Status508LoopDetectedHTTP 状态代码 508。
Status510NotExtendedHTTP 状态代码 510。
Status511NetworkAuthenticationRequiredHTTP 状态代码 511。

HttpStatusCode 枚举

官网地址,https://learn.microsoft.com/zh-cn/dotnet/api/system.net.httpstatuscode?view=net-9.0

定义

  • 命名空间: System.Net
  • 程序集: System.Net.Primitives.dll

包含为 HTTP 1.1RFC 2616 中定义的 HTTP 定义的状态代码值。

public enum HttpStatusCode

继承 Object —> ValueType —> Enum —> HttpStatusCode

适用于

产品版本
.NETCore 2.0, Core 2.1, Core 2.2, Core 3.0, Core 3.1, 5, 6, 7, 8, 9
.NET Framework1.1, 2.0, 3.0, 3.5, 4.0, 4.5, 4.5.1, 4.5.2, 4.6, 4.6.1, 4.6.2, 4.7, 4.7.1, 4.7.2, 4.8, 4.8.1
.NET Standard1.0, 1.1, 1.2, 1.3, 1.4, 1.6, 2.0, 2.1
UWP10.0

字段说明

以下是 HttpStatusCode 枚举的完整 HTTP 状态码 表,包含名称、值和说明:

名称说明
Accepted202等效于 HTTP 状态 202。指示已接受请求做进一步处理。
AlreadyReported208等效于 HTTP 状态 208。指示已在多状态响应的前面部分枚举了 WebDAV 绑定的成员,并且不再将其包含在内。
Ambiguous300等效于 HTTP 状态 300。指示请求的信息有多种表示形式。默认操作是将此状态视为重定向,并遵循与此响应关联的 Location 标头的内容。AmbiguousMultipleChoices 的同义词。
BadGateway502等效于 HTTP 状态 502。指示中间代理服务器从另一代理或原始服务器接收到错误响应。
BadRequest400等效于 HTTP 状态 400。指示服务器未能识别请求。如果没有其他适用的错误,或者不知道准确的错误或错误没有自己的错误代码,则发送 BadRequest
Conflict409等效于 HTTP 状态 409。指示由于服务器上的冲突而未能执行请求。
Continue100等效于 HTTP 状态 100。指示客户端可能继续其请求。
Created201等效于 HTTP 状态 201。指示请求导致在响应被发送前创建新资源。
EarlyHints103等效于 HTTP 状态 103。向客户端指示服务器可能会发送最终响应,其中标头字段包含在信息性响应中。
ExpectationFailed417等效于 HTTP 状态 417。指示服务器未能符合 Expect 标头中给定的预期值。
FailedDependency424等效于 HTTP 状态 424。指示无法对资源执行该方法,因为请求的操作依赖于其他操作,并且该操作失败。
Forbidden403等效于 HTTP 状态 403。指示服务器拒绝满足请求。
Found302等效于 HTTP 状态 302。指示请求的信息位于 Location 标头中指定的 URI 处。接收到此状态时的默认操作为遵循与响应关联的 Location 标头。原始请求方法为 POST 时,重定向的请求将使用 GET 方法。FoundRedirect 的同义词。
GatewayTimeout504等效于 HTTP 状态 504。指示中间代理服务器在等待来自另一个代理或原始服务器的响应时已超时。
Gone410等效于 HTTP 状态 410。指示请求的资源不再可用。
HttpVersionNotSupported505等效于 HTTP 状态 505。指示服务器不支持请求的 HTTP 版本。
IMUsed226等效于 HTTP 状态 226。指示服务器已执行对资源的请求,并且响应表示应用于当前实例的一个或多个实例操作的结果。
InsufficientStorage507等效于 HTTP 状态 507。指示服务器无法存储完成请求所需的表示形式。
InternalServerError500等效于 HTTP 状态 500。指示服务器上发生了一般错误。
LengthRequired411等效于 HTTP 状态 411。指示缺少必需的 Content-length 标头。
Locked423等效于 HTTP 状态 423。指示源或目标资源已锁定。
LoopDetected508等效于 HTTP 状态 508。指示服务器已终止操作,因为它在处理带有 “Depth: infinity” 的 WebDAV 请求时遇到了无限循环。
MethodNotAllowed405等效于 HTTP 状态 405。指示请求的资源上不允许请求方法(POST 或 GET)。
MisdirectedRequest421等效于 HTTP 状态 421。指示请求被定向到无法生成响应的服务器。
Moved301等效于 HTTP 状态 301。指示请求的信息已移到 Location 头中指定的 URI 处。接收到此状态时的默认操作为遵循与响应关联的 Location 标头。MovedMovedPermanently 的同义词。
MovedPermanently301等效于 HTTP 状态 301。指示请求的信息已移到 Location 头中指定的 URI 处。接收到此状态时的默认操作为遵循与响应关联的 Location 标头。MovedPermanentlyMoved 的同义词。
MultipleChoices300等效于 HTTP 状态 300。指示请求的信息有多种表示形式。默认操作是将此状态视为重定向,并遵循与此响应关联的 Location 标头的内容。MultipleChoicesAmbiguous 的同义词。
MultiStatus207等效于 HTTP 状态 207。指示 Web 分布式创作和版本管理 (WebDAV) 操作期间的单个响应有多个状态代码。响应正文包含描述状态代码的 XML。
NetworkAuthenticationRequired511等效于 HTTP 状态 511。指示客户端需要进行身份验证才能获得网络访问权限;它旨在用于拦截用于控制网络访问权限的代理。
NoContent204等效于 HTTP 状态 204。指示已成功处理请求并且响应已被设定为无内容。
NonAuthoritativeInformation203等效于 HTTP 状态 203。指示返回的元信息来自缓存副本而不是源服务器,因此可能不正确。
NotAcceptable406等效于 HTTP 状态 406。指示客户端已用 Accept 标头指示将不接受资源的任何可用表示形式。
NotExtended510等效于 HTTP 状态 510。指示服务器需要进一步扩展请求才能使服务器完成该请求。
NotFound404等效于 HTTP 状态 404。指示请求的资源不在服务器上。
NotImplemented501等效于 HTTP 状态 501。指示服务器不支持请求的函数。
NotModified304等效于 HTTP 状态 304。指示客户端的缓存副本是最新的。未传输此资源的内容。
OK200等效于 HTTP 状态 200。指示请求成功,且请求的信息包含在响应中。这是最常接收的状态代码。
PartialContent206等效于 HTTP 状态 206。指示响应是包括字节范围的 GET 请求所请求的部分响应。
PaymentRequired402等效于 HTTP 状态 402。保留 PaymentRequired 以供将来使用。
PermanentRedirect308等效于 HTTP 状态 308。指示请求信息位于 Location 标头中指定的 URI 处。接收到此状态时的默认操作为遵循与响应关联的 Location 标头。原始请求方法为 POST 时,重定向的请求还将使用 POST 方法。
PreconditionFailed412等效于 HTTP 状态 412。指示此请求的条件集失败,并且无法执行该请求。使用条件请求标头设置添加,如:If-MatchIf-None-MatchIf-Unmodified-Since
PreconditionRequired428等效于 HTTP 状态 428。指示服务器要求的请求为条件请求。
Processing102等效于 HTTP 状态 102。指示服务器已接受完成请求,但尚未完成该请求。
ProxyAuthenticationRequired407等效于 HTTP 状态 407。指示请求的代理要求身份验证。Proxy-authenticate 标头包含如何执行身份验证的详细信息。
Redirect302等效于 HTTP 状态 302。指示请求的信息位于 Location 标头中指定的 URI 处。接收到此状态时的默认操作为遵循与响应关联的 Location 标头。原始请求方法为 POST 时,重定向的请求将使用 GET 方法。RedirectFound 的同义词。
RedirectKeepVerb307等效于 HTTP 状态 307。指示请求信息位于 Location 标头中指定的 URI 处。接收到此状态时的默认操作为遵循与响应关联的 Location 标头。原始请求方法为 POST 时,重定向的请求还将使用 POST 方法。RedirectKeepVerbTemporaryRedirect 的同义词。
RedirectMethod303等效于 HTTP 状态 303。作为 POST 的结果,RedirectMethod 将客户端自动重定向到 Location 标头中指定的 URI。用 GET 生成对 Location 标头所指定的资源的请求。RedirectMethodSeeOther 的同义词。
RequestedRangeNotSatisfiable416等效于 HTTP 状态 416。指示无法返回从资源请求的数据范围,因为范围的开头在资源的开头之前,或因为范围的结尾在资源的结尾之后。
RequestEntityTooLarge413等效于 HTTP 状态 413。指示请求太大,服务器无法处理。
RequestHeaderFieldsTooLarge431等效于 HTTP 状态 431。指示服务器不愿意处理请求,因为它的标头字段(单个标头字段或所有标头字段合计)太大。
RequestTimeout408等效于 HTTP 状态 408。指示客户端没有在服务器期望请求的时间内发送请求。
RequestUriTooLong414等效于 HTTP 状态 414。指示 URI 太长。
ResetContent205等效于 HTTP 状态 205。指示客户端应重置(而非重新加载)当前资源。
SeeOther303等效于 HTTP 状态 303。作为 POST 的结果,SeeOther 将客户端自动重定向到 Location 标头中指定的 URI。用 GET 生成对 Location 标头所指定的资源的请求。SeeOtherRedirectMethod 的同义词。
ServiceUnavailable503等效于 HTTP 状态 503。指示服务器暂时不可用,通常是由于过多加载或维护。
SwitchingProtocols101等效于 HTTP 状态 101。指示正在更改协议版本或协议。
TemporaryRedirect307等效于 HTTP 状态 307。指示请求信息位于 Location 标头中指定的 URI 处。接收到此状态时的默认操作为遵循与响应关联的 Location 标头。原始请求方法为 POST 时,重定向的请求还将使用 POST 方法。TemporaryRedirectRedirectKeepVerb 的同义词。
TooManyRequests429等效于 HTTP 状态 429。指示用户在给定时间内发送了太多请求。
Unauthorized401等效于 HTTP 状态 401。指示请求的资源要求身份验证。WWW-Authenticate 标头包含如何执行身份验证的详细信息。
UnavailableForLegalReasons451等效于 HTTP 状态 451。指示服务器由于法律要求而拒绝访问资源。
UnprocessableContent422等效于 HTTP 状态 422。指示请求格式正确,但由于语义错误,无法遵循该请求。UnprocessableContentUnprocessableEntity 的同义词。
UnprocessableEntity422等效于 HTTP 状态 422。指示请求格式正确,但由于语义错误,无法遵循该请求。UnprocessableEntityUnprocessableContent 的同义词。
UnsupportedMediaType415等效于 HTTP 状态 415。指示请求是不受支持的类型。
Unused306等效于 HTTP 状态 306。是未完全指定的 HTTP/1.1 规范的建议扩展。
UpgradeRequired426等效于 HTTP 状态 426。指示客户端应切换为诸如 TLS/1.0 之类的其他协议。
UseProxy305等效于 HTTP 状态 305。指示请求应使用位于 Location 标头中指定的 URI 的代理服务器。
VariantAlsoNegotiates506等效于 HTTP 状态 506。指示所选的变体资源配置为参与透明内容协商本身,因此在协商过程中不是正确的终结点。

以上表格总结了所有 HTTP 状态码 及其含义,便于查阅和理解。

ProblemDetails 异常信息标准化类

官网地址,https://learn.microsoft.com/zh-cn/dotnet/api/microsoft.aspnetcore.mvc.problemdetails?view=aspnetcore-9.0

定义

  • 命名空间: Microsoft.AspNetCore.Mvc
  • 程序集: Microsoft.AspNetCore.Http.Abstractions.dll
  • Nuget 包: Microsoft.AspNetCore.App.Ref v9.0.2

一种计算机可读格式,用于指定基于 rfc7807HTTP API 响应中的错误

  • rfc7807 标准参考,https://www.rfc-editor.org/rfc/rfc7807.html
public class ProblemDetails

继承 Object —> ProblemDetails
派生 Microsoft.AspNetCore.Http.HttpValidationProblemDetails

适用于

产品版本
ASP.NET Core2.1, 2.2, 3.0, 3.1, 5.0, 6.0, 7.0, 8.0, 9.0, 10.0

类说明

  • 构造函数
函数名称描述
ProblemDetails()一种计算机可读格式,用于指定基于 https://tools.ietf.org/html/rfc7807HTTP API 响应中的错误
  • 属性

以下是 ProblemDetails 类的属性信息,整理为清晰的 Markdown 表格:

属性名数据类型说明
Detailstring特定于此问题发生的人工可读说明。用于提供详细的错误描述。
ExtensionsIDictionary<string, object>获取扩展成员的字典。问题类型定义可以使用其他成员扩展问题详细信息对象,这些扩展成员与问题类型的其他成员处于同一命名空间中。
Instancestring标识问题特定发生的 URI 引用。如果取消引用,它可能会生成进一步的信息,也可能不产生进一步的信息。
Statusint?HTTP 状态代码(依据 [RFC7231] 第 6 节),表示源服务器为此问题生成的状态码。
Titlestring问题类型的简短、可读摘要。该值不应因问题发生而改变,除非出于本地化目的(例如,使用主动内容协商;请参阅 [RFC7231] 第 3.4 节)。
Typestring标识问题类型的 URI 引用(依据 [RFC3986])。此规范鼓励在取消引用时,为问题类型提供用户可读的文档(例如,使用 HTML)。如果此成员不存在,则假定其值为 "about:blank"
说明
  • ProblemDetails 是一种标准的错误响应格式,常用于 RESTful API 中,符合 RFC 7807 规范。
  • 它提供了一种结构化的方式来返回 HTTP 错误信息,并支持扩展字段,便于客户端处理不同的错误场景。
  • 上表中的每个属性都可以用于构建标准化的错误响应,提高前后端协作效率。
JSON 示例

以下是基于 ProblemDetails 类的属性信息构建的标准 JSON 示例结构:

{
  "type": "https://example.com/probs/validation-error",
  "title": "Validation Failed",
  "status": 400,
  "detail": "One or more validation errors occurred.",
  "instance": "/example/12345",
  "extensions": {
    "invalid_fields": [
      {
        "field": "username",
        "message": "Username is required."
      },
      {
        "field": "email",
        "message": "Email must be a valid address."
      }
    ]
  }
}

温馨提示:
asp.net core 项目中,可以使用该标准化异常对象包装全局异常处理信息,下一篇文章详解哟。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

ChaITSimpleLove

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值