2012-01-05 5 views
4

WebGet UriTemplateはドット( '。' /%2E)で失敗しますか?私はこのUriTemplateは、WCFサービスの一部として機能していないとどこに行くように見えることはできません理由を把握するために、今しばらくの間しようとしてきた

[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 /リソースが見つかりません'で失敗するのか不思議です。

答えて

3

私は前に同じ問題に遭遇しました。私はそれがIISの限界であり、WCFとは何の関係もないことに気付きました。 IISが最初に傍受するとき、要求に続く。拡張機能を表しているため、その拡張機能のマネージハンドラを検索しようとします。何も見つからないので、それはちょうど404を投げます。

よろしくお願いします。 パブロ。

+0

非常に良い点、私は間違った場所で答えを探していた! IISとたくさんの情報を検索すると、[ここではもっと欲しいと思う](http://stackoverflow.com/questions/294495/semantic-urls-with-dots-in-net)。 – Chris

+0

非常に良い点。あなたが得た得点以上に何倍も価値があります!私はWebサービスのURLをファイルのように見せようとしていたので、.somethingで終わりました! –

+0

他の文字は無効ですか? –

関連する問題

 関連する問題