2012-03-05 10 views
0

VSライブサーバー上で動作していない私は、ユーザーのログインを必要とし、そのHTMLは次のようであるリンクを持っているMVC3かみそりビューを持っていますとビュー。ログオンアクションメソッドに値を投稿します。リターンURLは開発サーバ

投稿アクションのメソッドreturnurlがnullでないかどうかを確認してから、そのURLにリダイレクトします。ローカルシステム上では、このアドレス

http://localhost:1235/myProjname/Product/Index

に戻り、正常に動作します。しかし、私はそれをサーバーにアップロードするとき(IIS 7)、それは

http://domainname/myProjname/Product/Index

に戻り、そこには「myProjname」が存在しないため、404を与え、私は「myprojname」を削除した場合、それがこのURLで動作しますライブサーバー

http://domainname/Product/Index

が、そのために、私は、その場合には、この

<a href="Home/Login?returnUrl=/Product/Index"> 

ようにそれをHREFを変更する必要がありますURL

http://localhost:1235/Product/Index

とローカルシステムでは動作しませんソリューション

答えて

2

を提案してください本気なの?

さて、私は一緒に遊びます。

解決策は、リンクを正しく作成することであり、ハードコード化することではありません。

@Html.ActionLink("Login", "Home", new { returnUrl = Url.Action("Index", "Product") }) 

さらに、returnUrlをアクションに渡す必要はありません。アクションメソッド自体のRequest.UrlReferrer.AbsoluteUriから戻します。

無礼には意味がありませんが、私は強くに進み、さらに進める前にhttp://www.asp.net/mvcに向かい、読書/時計を持っていることをお勧めします。

1

Url.ActionUrl.Contentヘルパーメソッドを使用すると、アプリケーションルートに関連するURLが生成され、これらの問題を回避できます。

また、@Href("~/")は(ビューから)アプリケーションルートへのフルパスを生成します。