0

Angularアプリケーションの.axdパスに「POST」リクエストを送信するライブラリを使用しています。私はUI-Routerを使用しているため、URLに​​が追加されているため、リクエストが適切にDLLに届かない可能性があります。ライブラリに到達する必要がUI-RouterおよびMVCを使用したHTTPハンドラへのアクセス5

URLは次のようになります。しかし、私は戻って、この「POST」リクエストから取得していますすべては、ページのHTMLデータである

http://localhost:8080/MyApplication/MyArea/ModuleName#/ThermalLabelWebEditor.axd?_=1478731762000

。これは、DLLにアクセスするのではなく、上記のURLに一致するページを検索して、デフォルトの方法でパスを処理するMVCの症状だと思います。私が達成しようとしています何

はしかし、これはMVCでは有効ではありません

routes.IgnoreRoute("{*anything}/ThermalLabelWebEditor.axd/{*pathInfo}"); 

の線に沿って何かです。

また、私は主に、私のエリアのWeb.configファイルで、このライブラリに必要なhttpHandler秒を指定した:

<system.web> 
    <httpHandlers> 
     <add path="ThermalLabelWebEditor.axd" verb="*" type="Neodynamic.Web.ThermalLabelEditor.ThermalLabelWebEditor"/> 
... 
<system.webServer> 
    <handlers> 
     <add name="TLWE" path="ThermalLabelWebEditor.axd" verb="*" preCondition="integratedMode" type="Neodynamic.Web.ThermalLabelEditor.ThermalLabelWebEditor" /> 

は今、私は私が私の角度モジュールの設定で$locationProvider.html5Mode(true);を指定することができることを知っています。しかし、可能であれば、#フォールバックを使用しなければならない古いHTML5以外のブラウザでは問題を解決できないため、これを避けたいと思います。

ThermalLabelWebEditor.axdへのリクエストが正常に完了するように、このエリア(またはMVCアプリケーション全体)またはRouteConfig.csに私のWeb.configファイルを設定するにはどうすればよいですか?

MVC 5、.NET 4.6、Angular 1.5.8、UI-Router v0.3.1を使用しています。

答えて

0

多くの調査の結果、この問題はJavaScript側でしか解決できないと判断しました。ワイルドカードを使用しても、IISがHTTPハンドラのpathセクションで#を解析するようにする方法がないようです。 #がどのようにURLを短絡するのかという性質上、IISは要求をHTTPハンドラにルーティングすることができず、代わりにアプリケーションを壊している標準のMVCを使用して応答を処理します。同様に、​​であっても、MVCは#文字を解釈するように構成することはできません。

この問題の解決策は、リクエストを送信して#を削除する前に、URLを解析するだけです。これを実行すると、MVC構造を調べる前に、MyArea/MyModule/HttpHandler.axd...のルートを調べ、IISでインターセプトするハンドラマッピングを設定できます。

UI-RouterでHTML5モードを使用しないようにする理由は、ブラウザの互換性を維持するためです。 HTML5モードが有効になっている場合、HTML5準拠のブラウザでこの問題は修正されます。ただし、HTML5以外のブラウザでは、URLの#にフォールバックするため、アプリケーションが壊れます。

関連する問題