4
[WebGet(UriTemplate="api/1.0/version")]
string GetVersion();
簡単なテストはUrlTemplateTableがそれと一致していることを示しています(出力は「API/1.0 /バージョン」です)ファイン:
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とたくさんの情報を検索すると、[ここではもっと欲しいと思う](http://stackoverflow.com/questions/294495/semantic-urls-with-dots-in-net)。 – Chris
非常に良い点。あなたが得た得点以上に何倍も価値があります!私はWebサービスのURLをファイルのように見せようとしていたので、.somethingで終わりました! –
他の文字は無効ですか? –