gpt4 book ai didi

wcf - WebGet UriTemplate 在点 ('.'/%2E 上失败)?

转载 作者:行者123 更新时间:2023-12-04 16:04:00 25 4
gpt4 key购买 nike

我已经尝试了一段时间来弄清楚为什么这个 UriTemplate 不能作为 WCF 服务的一部分工作并且似乎无法到达任何地方:

[WebGet(UriTemplate="api/1.0/version")]
string GetVersion();

快速测试表明 UrlTemplateTable 匹配得很好(输出为“api/1.0/version”):
static void Main(string[] args)
{
Uri prefix = new Uri("http://localhost/");
System.UriTemplateTable table = new System.UriTemplateTable(prefix);
table.KeyValuePairs.Add(new KeyValuePair<UriTemplate, Object>(new UriTemplate("api/1.0/version"), "a"));
table.KeyValuePairs.Add(new KeyValuePair<UriTemplate, Object>(new UriTemplate("api/2.0/version"), "b"));
table.KeyValuePairs.Add(new KeyValuePair<UriTemplate, Object>(new UriTemplate("api/version"), "c"));

Uri uri = new Uri("http://localhost/api/1.0/version");
UriTemplateMatch match = table.MatchSingle(uri);
Console.WriteLine("{0}", match.Template.ToString());
}

点不是 URL 中的非法字符,RequestPathInvalidCharacters 不排除它,没有可能干扰的重写规则。在它的文档中也找不到任何内容。

虽然有一个明显的解决方法,不要在模板中使用点,但我很好奇为什么它会因“HTTP 404/找不到资源”而失败。

最佳答案

我之前遇到过同样的问题。我意识到这是 IIS 中的限制,与 WCF 无关。当 IIS 最初拦截请求时,会假定 .代表一个扩展,因此它尝试为该扩展找到一个托管处理程序。由于它没有找到任何,它只是抛出一个 404。

问候
巴勃罗。

关于wcf - WebGet UriTemplate 在点 ('.'/%2E 上失败)?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8739312/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com