13

文字列「con」のどこが間違っているのでしょうか?

OK、私の api ルート設定はあまり面白くありません:

config.Routes.MapHttpRoute(
    name: "DefaultApi",
    routeTemplate: "api/{controller}/{id}",
    defaults: new { id = RouteParameter.Optional }
);

LocationController には次のメソッドがあります。

public List<LocationViewModel> Get(string id)
{
    return _ds.SearchLocations(id);
}

次のようにリソースを取得しようとすると HTTP 404 エラーが発生することを除いて、すべてが正常に機能します。

/api/場所/コン

この場合、メソッドはヒットしません。奇妙なことに、「con」以外の文字列を id パラメータとして設定すると、コントローラー メソッドがヒットし、正しく動作します。

これは、Cassini を使用して localhost でアプリケーションをデバッグしているときに発生します (IIS Express でも同じです)。プロジェクト ディレクトリに「con」という名前のファイルはありません。アプリのエラー イベントを処理した後、IntelliTrace は次のメッセージを含む HttpException を明らかにしました:「パス '/api/location/con' をマップできませんでした」...

手がかりはありますか?これは既知のバグですか?

前もって感謝します!

4

1 に答える 1

20

URL では特定のキーワードを使用できません。CON はその 1 つです。これを参照してください。<system.web>回避策は、Web.configに以下を含めることです。

<httpRuntime relaxedUrlToFileSystemMapping="true" />
于 2013-07-13T07:26:25.023 に答える