Asp.net mvc アプリケーションを開発しています。ASP.net 開発サーバーではすべて正常に動作しますが、IIS 7 でホストしようとすると、URL 解決に関連する問題が発生します。画像を提供するためにJavascriptで相対パスを使用しました。スクリプト ファイルは ~/Scripts/ フォルダーにあり、画像ファイルは ~/Content/images/ フォルダーにあります。今、javascript ファイルで、http://localhost/WebApp1/controller1/action1/ のような相対パスを指定して、give を使用しようとしています。http:// localhost /controller1/action1/ でそれを見つけようとしますが、ファイルを見つけます。
4 に答える
私の読み方が正しければ、開発環境の WebApp1 ではなく、IIS7 のドメイン ルートから WebApp を実行していますか?
したがって、私の仮定が正しければ、~/はhttp://localhost/WebApp1/ではなくhttp://localhost/に解決されるはずです。
それがすべて正しい場合は、フォルダー構造がすべて 1 レベル上に移動し、 ~/scripts フォルダーが絶対パスになります。
画像フォルダーは次のとおりです。
http://localhost/Content/Images/
スクリプトから画像にアクセスするには、いくつかの方法を使用できます。最も簡単な方法は、スクリプト ディレクトリからの相対パスを使用することです: "../Content/Images/MyImage.jpg"
または、document.location.host を使用して、javascript 内で完全修飾パス名を作成することもできます: document.location.host + "/Content/Images/MyImage.jpg"
もう 1 つの方法は、ASP.NET でスクリプトのこの部分を動的に作成して、完全修飾パス名が挿入されるようにすることです。これを行うには、ScriptManager.RegisterStartupScriptまたはScriptManager.RegisterScriptBlockを使用します。
この猫の皮を剥ぐには本当にたくさんの方法がありますが、頭の中で思いつく最初の 3 つにすぎません。
私は同じ問題を抱えていて、David Banister による要素の解決策を見つけました。この問題は、(www.mysite.com/viewName/index ではなく、www.mysite.com/viewName) の形式で URL を返す MVC コントローラーの index アクションにあり、後で Web ブラウザーが css を参照しようとすると失敗します。または相対パス構文 (../../) を使用する js ファイル。
彼の解決策は私にとってうまくいきます。これが誰かに役立つことを願っています。幸運を。
http://blog.davidbanister.com/2010/09/28/mvc-fixes-relative-path-issues-in-asp-net-mvc-2/
試す:
<a href="~/controller1/action1/" id="testLnk" runat="サーバー">
runat 属性は、フレームワークがそれを解決することを保証する必要があります。ResolveUrl メソッドを使用することもできます。
過去にこの問題が発生しました。チルダを使用してみてください
〜/コントローラー1/アクション1/