2016-04-02 14 views
1

シンプルなasp.netアプリケーション(webforms)を構築しようとしています。クライアントでルーティングを行いたいと思います。これはSPAです。asp.netクライアントルーティングwith page.js

私はルーティングを処理するためにpage.jsライブラリを使用しています。私の開発環境はVisual Studio 2015 Enterpriseです。すべてのURL要求のために、index.htmlをは(ルーティングは、クライアントで処理されるため)ロードされていること。これは、サーバー側でルーティング

page('/admin', display_admin); 
page('/items/:sub/:id', display_item); 

の一例であり、適切なルートハンドラはIセットアップの事ですので、呼び出されて実行されます。私が持っているweb.configファイルで:

<configuration> 
<system.webServer> 
    <modules runAllManagedModulesForAllRequests="true" /> 
    <rewrite> 
    <rules> 
     <!--Redirect selected traffic to index --> 
     <rule name="Index Rule" stopProcessing="true"> 
     <match url=".*" /> 
     <conditions logicalGrouping="MatchAll"> 
      <add input="{REQUEST_FILENAME}" matchType="IsFile" negate="true" /> 
      <add input="{REQUEST_URI}" matchType="Pattern" pattern="^/api/" negate="true" /> 
     </conditions> 
     <action type="Rewrite" url="/index.html" /> 
     </rule> 
    </rules> 
    </rewrite> 
</system.webServer> 
</configuration> 

カスタムURLがこの形式である「/ XXX」は、例えば「/管理者」、「/アイテム」などときASP.NET 5 and AngularJS Part 3, Adding Client Routing

すべてが正常に動作します。この資料を参照してください。 ...しかし、 '/ xxx/yyy/zzz'という形式のパスがある複雑なURLではうまくいきません。例: 'items/cars/10'。 Visual Studioでのアプリケーションcrachesをデバッグ中:

enter image description here

あなたは、サーバー(Visual Studioで埋め込まれたWebサーバ)がローカルホスト「でフォルダから「1」ページのためのリソースをロードしようとしていることがわかります:ポート/アイテム/ c/'はもちろん存在しません。このリクエストは、 'index.html'ページをリダイレクトするサーバーには届きません。

asp.net(.htmlファイルで、.aspxファイルではない)と複雑なURLパスでクライアント側ルーティングを実装するにはどうすればよいですか?

I(...光IISのバージョンである)、これはVisual Studioで埋め込まれたWebサーバに関連する問題であることを推測してい

すべてのヘルプ、任意のヒントを大幅に

をいただければ幸いありがとうのStackOverflowコミュニティ

+0

スクリプトで絶対パスを使用しますか? –

+0

これはpage.jsの動作です。 express.jsの動作を模倣しようとしますが、クライアントでは – TheSoul

+0

だから、あなたはindex.htmlにブートストラップのリファレンスを書きませんでした。 –

答えて

1

相対のスクリプトへのパスを使用している可能性が最も高いです。つまり、ブラウザーは、提供されているページが/something/else/entirely以下であると想定し、そこに要求します。 絶対のパスを/bootstrap.min.jsとして使用して、正しく要求されていることを確認してください。

サーバーは内部設定で/index.htmlにリダイレクトされている可能性がありますが、ブラウザはそれを認識しません。

シングルレベル/somethingが機能する理由は、すべてがルートレベルにあると仮定しているためです。追加のスラッシュとコンテキストが1つの「フォルダ」を下に移動します。