2017-02-21 2 views
0

これらの状況に対応しています404 Refreshscenarios 私たちはHTML5モードですから、URLを修正する必要があります。問題は、展開されたアプリケーションで動作するソリューションは、開発中にVisual Studioで動作しないということです。 web.configファイルに次のように置くことによって展開されたアプリケーションの動作のための角のついたリンクがサーバを壊す

当社のソリューション:

<rewrite> 
    <rules> 
    <rule name="AngularJS Routes" stopProcessing="true"> 
     <match url=".*" /> 
     <conditions logicalGrouping="MatchAll"> 

     <add input="{REQUEST_FILENAME}" matchType="IsFile" negate="true" /> 
     <add input="{REQUEST_FILENAME}" matchType="IsDirectory" negate="true" /> 
     <add input="{REQUEST_URI}" pattern="(api)" negate="true" /> 
     <add input="{REQUEST_URI}" pattern="^/(api)" negate="true" /> 

     </conditions> 
     <action type="Rewrite" url="/myAppName/" /> 
    </rule> 
    </rules> 
</rewrite> 

そしてindex.htmlのための以下の変更:

<base href="/myAppName/"> 

これは主に除いて素晴らしい作品Angularで作成したリンクの場合たとえば、

<a href="/partDetails/"></a> 

配備されたアプリは、URLに「myAppName」を入れません。どうしてこれなの?

は、Visual Studioの開発環境では、<base href="/myAppName/">がアプリケーションを壊すことがあります。これは、次のようになり、出力にエラーの無限の文字列を生成するにアプリをスロー:

SourceMap http://localhost:40288/app.module.js.map read failed: Unexpected character encountered while parsing value: <. Path '', line 4, position 1..SourceMap http://localhost:40288/app.core.module.js.map read failed: Unexpected character encountered while parsing value: <. Path '', line 4, position 1..SourceMap http://localhost:40288/app.config.js.map read failed: Unexpected character encountered while parsing value: <. Path '', line 4, position 1.. 

Exception was thrown at line 1247, column 4 in eval code 
0x800a139e - JavaScript runtime error: SyntaxError 
Exception was thrown at line 1265, column 4 in eval code 
0x800a139e - JavaScript runtime error: SyntaxError 

これは、メモリがなくなるまで無限ループのようです。しかし、私が<base href="/myAppName/">からアプリ名を削除した場合、正常に動作しているように見えますが、サーバが壊れてしまいます。

ここで問題が発生しているアイデアはありますか?ソリューションは片面、開発、または展開されているだけなので、どうすれば解決できるのですか?

答えて

1

<base>ディレクティブの絶対URLを作成する場合は、それが動作するはずです。 - 私はそれが必要ならば、私は確認することができ、コンピュータではないんだけど

Option Infer On 

Protected Sub Page_Init(sender As Object, e As System.EventArgs) Handles Me.Init 
    Dim baseUrl = Request.Url.GetLeftPart(UriPartial.Authority) & VirtualPathUtility.ToAbsolute("~/") & "myAppName/" 
    baseLink.Text = $"<base href=""{baseUrl}"">" 
End Sub 

(私は最後に& "myAppName/"をタック:<head>セクションの「baseLink」という名前asp:Literalと例えば

、代わりに....ToAbsolute("~/myAppName/")を使用してください。)

+0

これを試しましたが、上記のすべての例外と同じ問題がローカルに発生します。 – jlembke

+0

レンダリングされたベースURLが正しいことを確認しましたか?ここからは見えません。 –

+0

あなたが提案したコードは正しい "http:// localhost:40288/myAppName /"をレンダリングします。しかし、 "/ myAppName /"もそうです。どちらもアプリケーションで上記の例外を生成し、ページはレンダリングされません。それらは例外なく無限に生成されます。ベースを "/"に変更すると、すべてがローカルで正常に動作しますが、サーバー上で動作します。 – jlembke

関連する問題