私は、次の(と同様の)URLは私のASP.net MVC4/WEBAPIプロジェクトで動作するように取得しようとしている:責任ASP.net MVC4 WebAPIのルートでそれ
http://127.0.0.1:81/api/nav/SpotiFire/SpotiFire.dll
ルートこのURLの場合は、次のようになります。
config.Routes.MapHttpRoute(
name: "Nav",
routeTemplate: "api/nav/{project}/{assembly}/{namespace}/{type}/{member}",
defaults: new { controller = "Nav", assembly = RouteParameter.Optional, @namespace = RouteParameter.Optional, type = RouteParameter.Optional, member = RouteParameter.Optional }
);
これを削除するとうまくいきます。ファイル名にスラッシュを追加すると、URLの後ろにスラッシュを追加しても、それはUrl.Route
のメソッドなどを使用できないことを意味します。エラーは一般的な404エラー(下の画像)です。
私は私のweb.configファイルに<httpRuntime targetFramework="4.5" relaxedUrlToFileSystemMapping="true" />
を追加しようとしました、と私はまた
<compilation debug="true" targetFramework="4.5">
<buildProviders>
<remove extension=".dll"/>
<remove extension=".exe"/>
</buildProviders>
</compilation>
を追加しようとしましたそして、それがどれも動いていないようにみえ。ですから、私の質問は基本的に、このURLをどのように動作させ、正しくマップするのですか?
ルートの最後の部分だけをオプションにすることができます。この例では、プロジェクトオプション以外のすべてのルートパラメータを作成していることがわかりましたが、これは明らかに不可能です。また、urlでは 'urlの' namespace'と 'type'部分が欠けていることを示しています。 'member'部分のみがルートの終わりに定義されているのでオプションであることができます。 –
これは真実ではなく、問題なく動作することが証明されています。あなたは、あなたが望むように多くの部品をオプションで持つことができます。例えば、私がちょうど私の答えで作った変更の前に、URL/api/nav/SpotiFireは魅力として働いた。 – Alxandr