将冒号 (:) 传递给浏览器中的 Web 服务(用于测试)

Passing a colon (:) to a webservice in a browser (for testing)

我想使用浏览器将日期字符串传递给网络服务进行测试。我试过 Chrome 和 Firefox,但都出现以下错误:

Server Error in '/' Application.
A potentially dangerous Request.Path value was detected from the client (:

网络服务(RESTful)是这样访问的:

http://localhost:52936/Accounts/mod_date/2015-05-13T15%3A15%3A19

我试过用引号将日期引起来,但出现同样的错误。这可能吗?

尝试查询字符串参数

由于您只是在执行测试,因此您应该能够将字符串化的 DateTime 值作为查询字符串参数传递,并且应该避免您的服务出现问题:

/Accounts/mod_date?yourDateParameterName=2015-05-13T15:15:19

或者如果您想要更深入的方法,您可以考虑 using a suggestion like the one mentioned in this related discussion

明确允许 : 个字符

Scott Hanselman 在 this blog post 中介绍了明确允许通过 URL 将某些字符传递给服务的想法。它基本上允许您定义传入时哪些值被视为 "dangerous",并且只需要您更改应用程序 web.config 中的 requestPathInvalidCharacters 设置:

<httpruntime requestvalidationmode="2.0">
         requestPathInvalidCharacters="<,>,*,%,:,&,\"
         />
</httpruntime>

至:

<!-- Removes the colon ':' as a dangerous parameter -->
<httpruntime requestvalidationmode="2.0">
         requestPathInvalidCharacters="<,>,*,%,&,\"
         />
</httpruntime>

这显然是非常有争议的东西,可能并非对所有情况都有用,但它一个选项。

考虑 Postman(用于测试)

此外,出于测试目的,您可以考虑使用像 Postman 这样的服务,它非常适合执行此类 API 测试。