REST API:使用属性路由在 url 中传递冒号 (:) 不起作用
REST API : Passing Colon (:) in url using attribute Routing doesn't work
我正在使用 swagger ui 来测试 POST 方法。我在 URL 中传递参数,但它不起作用。
大摇大摆-ui:
I enter this
Date: 2017-03-03T12:12:12
this is how it goes
in
url: https://servername/Results/2017-03-03T12%3A12%3A12
这行不通。它 return 404 错误
但是当我只传递它有效的日期时。
Date: 2017-03-03
我的方法:
[Route("{Results/{date}"), HttpPost]
public
Common.CallDetails StartTCISCall(DateTime date)
我也试过这个,但它甚至没有将它作为字符串捕获。
[Route("{Results/{*date}"), HttpPost]
public
Common.CallDetails StartTCISCall(string date)
我一去掉冒号,它就开始工作了。我能做什么?
此外,对于我的朋友来说,它可以在本地 VS 上运行,但是当他发布到 IIS 时,它不起作用,我们尝试了 3 个不同的服务器。这是为什么?
非常感谢,请帮忙。
首先,似乎编码后的 URLs 才有效?对于全局变量,根据这个:URL encoding。所以它不适用于 c# 中的路由。
对于问号后的编码字符串,您必须像这样解码字符串:
string result = Server.UrlDecode(date);
你的 URL 应该是这样构建的:
https://servername/Results?2017-03-03T12%3A12%3A12
事实证明这是一个 IIS 问题,其中服务器被配置为拒绝 : 或 % 所以这就是编码的 URL 没有通过的原因 .
更改 IIS 上的设置后,它可以正常工作。
希望对您有所帮助!
我正在使用 swagger ui 来测试 POST 方法。我在 URL 中传递参数,但它不起作用。
大摇大摆-ui:
I enter this
Date: 2017-03-03T12:12:12
this is how it goes in
url: https://servername/Results/2017-03-03T12%3A12%3A12
这行不通。它 return 404 错误
但是当我只传递它有效的日期时。
Date: 2017-03-03
我的方法:
[Route("{Results/{date}"), HttpPost]
public Common.CallDetails StartTCISCall(DateTime date)
我也试过这个,但它甚至没有将它作为字符串捕获。
[Route("{Results/{*date}"), HttpPost]
public Common.CallDetails StartTCISCall(string date)
我一去掉冒号,它就开始工作了。我能做什么?
此外,对于我的朋友来说,它可以在本地 VS 上运行,但是当他发布到 IIS 时,它不起作用,我们尝试了 3 个不同的服务器。这是为什么?
非常感谢,请帮忙。
首先,似乎编码后的 URLs 才有效?对于全局变量,根据这个:URL encoding。所以它不适用于 c# 中的路由。
对于问号后的编码字符串,您必须像这样解码字符串:
string result = Server.UrlDecode(date);
你的 URL 应该是这样构建的:
https://servername/Results?2017-03-03T12%3A12%3A12
事实证明这是一个 IIS 问题,其中服务器被配置为拒绝 : 或 % 所以这就是编码的 URL 没有通过的原因 .
更改 IIS 上的设置后,它可以正常工作。
希望对您有所帮助!