2016-12-14 13 views
2

私はangular2要素を持つプロジェクトasp.net-mvcを持っています。 iisアプリケーションを起動するために使用します。iisアプリケーションはホームフォルダ(ホームコントローラから開始)でindex.cshtmlを起動します。この要求を行うので、私はSystem.import('app')アプリのフォルダを見つけていないアプリケーションを起動したときに、今角度2の間違ったパスsystem.import( 'app')

<!DOCTYPE html> 
<html> 
<head> 
    <title>Angular QuickStart</title> 
    <meta charset="UTF-8"> 
    <meta name="viewport" content="width=device-width, initial-scale=1"> 
    <link href="~/styles.css" rel="stylesheet" /> 
    <!-- Polyfill(s) for older browsers --> 
    <script src="~/node_modules/core-js/client/shim.min.js"></script> 
    <script src="~/node_modules/zone.js/dist/zone.js"></script> 
    <script src="~/node_modules/reflect-metadata/Reflect.js"></script> 
    <script src="~/node_modules/systemjs/dist/system.src.js"></script> 
    <script src="~/systemjs.config.js"></script> 
    <script> 
     System.import('app').catch(function(err){ console.error(err); }); 
    </script> 
</head> 
<body> 
    <my-app>Loading AppComponent content here ...</my-app> 
</body> 
</html> 

::、インデックスファイルを以下のように、私は、角度用に変更

zone.js:1382 GET http://localhost/app/main.js 404(見つかりません)

私は手動でホームコントローラを呼び出す場合は、正しくパスが表示されます。

http://localhost/my_virtual_path/app/main.js

なぜこの行動? system.importを変更して、プロジェクトレベルに相対的なパスを確認できますか?完全性について

、これはsystem.config.jsです:すべての

/** 
* System configuration for Angular samples 
* Adjust as necessary for your application needs. 
*/ 
(function (global) { 
    System.config({ 
    paths: { 
     // paths serve as alias 
     'npm:': 'node_modules/' 
    }, 
    // map tells the System loader where to look for things 
    map: { 
     // our app is within the app folder 
     app: 'app', 

     // angular bundles 
     '@angular/core': 'npm:@angular/core/bundles/core.umd.js', 
     '@angular/common': 'npm:@angular/common/bundles/common.umd.js', 
     '@angular/compiler': 'npm:@angular/compiler/bundles/compiler.umd.js', 
     '@angular/platform-browser': 'npm:@angular/platform-browser/bundles/platform-browser.umd.js', 
     '@angular/platform-browser-dynamic': 'npm:@angular/platform-browser-dynamic/bundles/platform-browser-dynamic.umd.js', 
     '@angular/http': 'npm:@angular/http/bundles/http.umd.js', 
     '@angular/router': 'npm:@angular/router/bundles/router.umd.js', 
     '@angular/forms': 'npm:@angular/forms/bundles/forms.umd.js', 

     // other libraries 
     'rxjs':      'npm:rxjs', 
     'angular-in-memory-web-api': 'npm:angular-in-memory-web-api/bundles/in-memory-web-api.umd.js', 

     // librerie di terze parti 
     'angular2-datatable': 'npm:angular2-datatable', 
     'lodash': 'npm:lodash/lodash.js', 
    }, 
    // packages tells the System loader how to load when no filename and/or no extension 
    packages: { 
     app: { 
     main: './main.js', 
     defaultExtension: 'js' 
     }, 
     rxjs: { 
     defaultExtension: 'js' 
     }, 


     'angular2-datatable': { 
      main: 'index.js', 
      defaultExtension: 'js' 
     }, 

    } 
    }); 
})(this); 
+0

ポストsystemjs.config.js –

+0

の内容は、私が追加されましたが、私にはありません私は相対的なパスを変更したくないので、それは助けになると思います。 – FeroX

答えて

1

まず私は強くあなたが角度のアプリのためのasp.net MVCまたはそのような何かを使用していないお勧めします。それは必要ありません。あなたは休憩サービス(asp.net web api)と同じように使うことができます。とにかく、私はこの問題は だからあなたはhtmlファイルの先頭にこのタグを追加する必要があるアプリケーションパス(IISアプリケーション)から来ていると思う:

<head> 
<base href="/my_virtual_path/"> 
..... 
+0

問題を解決しますが、私は同僚とファイルを共有するときにファイルを変更する必要がないように、相対パスの解決策を探しています。 – FeroX

+0

asp.netのようにすることはできません。 asp.netはサーバー上のページをレンダリングするためです。あなたのパスはroot(www.domain.com)から始まるので、これは/ my_virtual_path /を使う必要はないことに注意してください。また、Angular2アプリではベースタグ()が必要であることを忘れないでください(参考文献を参照)。それはあなたのための完全な説明です。 –

+0

そして、あなたの心を変え、asp.netのアプローチを忘れる。 anglejs、angular2、および..... appsのサーバー側のレンダリングは必要ありません。 –

関連する問題