3

MVC ルーティングに少し問題があると思います。Razor ビューで ASP.NET MVC 4 を使用していることに注意してください。

次のようにルートを登録しています。

    routes.MapRoute(
        "Person",
        "Person/Show/{uniqueId}",
        new { controller = "Person", action = "Show", uniqueId = "" }
        );

    routes.MapRoute(
        name: "Default",
        url: "{controller}/{action}/{id}",
        defaults: new {controller = "Home", action = "Index", id = UrlParameter.Optional}
        );

私の PersonController は次のように実装されています。

[HandleError]
public class PersonController{
    public ActionResult Show(string uniqueId)
    {
        //get data from database
        var personData = GetPersonDataFromDatabase(uniqueId);

        return View("PersonView", new PersonViewModel(personData));       
    }
}

これは、_LayoutContent.cshtml のレイアウトを持つ PersonView.cshtml を表示し、さらに _Layout.cshtml のレイアウトを持つことになっています。

残念ながら、私はページを見ることができません....ログインしない限り.そして、なぜ違いが生じるのかわかりません.

ログインしていないときにページを読み込もうとすると、次のページに移動します。

http://mymachine:8083/?ReturnUrl=%2fPerson%2fShow%2fvXDwucay

Fiddler を使用して何が起こっているかを見ると、次のことが起こっていることがわかります。

  1. 302、HTTP、mymachine:8083、/Person/Show/vXDwucay
  2. 200、HTTP、mymachine:8038、/?ReturnUrl=%2fPerson%2fShow%2fvXDwucay

HTTP 302 の場合、次のものが返されていることがわかります。

<html><head><title>Object moved</title></head><body>
<h2>Object moved to <a href="/?ReturnUrl=%2fPerson%2fShow%2fvXDwucay">here</a>.</h2>
</body></html>

誰かがこの問題を引き起こしている可能性のある正しい方向に私を向けることができますか? ログインするとルートが機能するのは奇妙だと思います。私は本当に単純な間違ったことをしているに違いないと確信しています...または、問題の適切な場所を探していません。

4

1 に答える 1