2017-03-17 28 views
-1

を動作しない、私は RedirectToAction(「/インデックス」)仕事とRedirectToAction(「インデックス)」を返さないのはなぜ長い間

return RedirectToAction("Index","Vendor"); 

を返されたアクションを持っていたし、期待どおりに働きました。この関数が完了すると、私のIndex関数が呼び出されました。

しかし、最近は停止しました。今URL localhost:67676/Vendor/にブラウザに指示し、私のIndex()アクションが呼び出されないコードの同じ行とページが表示されます。

HTTPエラー403.14 - Webサーバーが内容を一覧表示しないように設定されて

を禁止このディレクトリのしかし

、私が予想して指数関数が呼び出されるようすべての作品

return RedirectToAction("/Index","Vendor"); 

のようなメソッドのパラメータにスラッシュを追加した場合。

私は今"/Index"を使用する必要がなく、"Index"

+0

あなたのアプリに「Vendor」という名前のフォルダを追加しましたか? –

+0

はい。理由( "/ Index")は動作しますが( "Index")は理解できませんか? – user111

+1

次に、「Vendor」という名前のフォルダがあることを前提としています(これは問題です。名前を変更して正常に動作します)。メッセージがあなたに伝えているように、あなたのURLはコントローラメソッドではなく、フォルダにリダイレクトされています。 –

答えて

1

エラーの前に働いていた理由を任意のアイデアは、あなたがVendorという名前のアプリでフォルダを持っていることを意味し、URLがVendorControllerではなく、そのフォルダに移動しようとしています。問題を解決するには、コントローラ名と一致しないようにフォルダの名前を変更します。

舞台裏で何が起こっているのかを理解するために、

return RedirectToAction("Index","Vendor");は、内部的に一致のためのあなたのルートの定義を見て、それがdefaults: new { controller = "Home", action = "Index", id = UrlParameter.Optional }を持っているあなたのデフォルトルートと一致します。コントローラーとして"Vendor"を渡すため、デフォルトと一致しません。したがって、URLの最初のセグメントはVendorになります。そして、あなたのパス"Index"がアクションとして渡されるので、ルートにマッチするので、追加のセグメントは追加されません(その必要はありません)。最終的なURLはあなたのフォルダと一致するlocalhost:67676/Vendorになります(したがってエラーです)。

あなたは、デフォルトのアクション("/Index" != "Index")と一致するので、それは今はない(とできなかった)ので、コントローラを打つであろうlocalhost:67676/Vendor/IndexなっURL内の第二のセグメントを生成しませんあなたの通過"/Index"return RedirectToAction("/Index","Vendor");を使用"Vendor/Index"

関連する問題