状況
ライセンス取得済みの ServiceStack 4.0.12 を使用して、純粋な ServiceStack/Razor アプリケーション (MVC4 または Web API なし) を開発しています。Dart プロジェクトから (AngularDart を使用して) トランスパイルされた Javascript ファイルを参照するビュー (cshtml) があります。
便宜上、dart プロジェクト フォルダーを ServiceStack プロジェクト内にネストしますが、Visual Studio には含めません。次に、Dart Editor を個別に使用して dart プロジェクトに取り組みます。
プロジェクト全体の構造は次のようになります。
MyApp.csproj
Global.asax.cs
\Controllers <- contains the IService formatted by 'Views\index.cshtml'.
\Dart <- not included in Visual Studio project.
\packages
\build
\myapp.dart.js
\lib
\web
\myapp.dart
\Views
\index.cshtml <- references 'myapp.dart.js'
ローカル IIS でシンプルな ServiceStack/Razor 'Hello World' をセットアップし、Dart エディターに切り替えて dart プロジェクトをセットアップしました。
問題
欲求不満が数分後に元に戻り、美しい「Hello World」が「Snapshot of Index」に置き換わっていることを想像してみてください。コード、構成、または再コンパイルの1行にも触れずに。
IIS Express に切り替えたところ、ServiceStack/Razor アプリは正常に動作するようになりました。同じコードで、構成の変更や再コンパイルはありません。
数時間髪を失い、さまざまな構成設定を突っ込んでサンドボックスプロジェクトで遊んで効果がなかった後、たまたま「Dart」フォルダーをVSプロジェクトフォルダーの外に移動し、Web.configを変更してアプリを更新しました-アプリは機能しましたまた!
案の定、「Dart」フォルダーをプロジェクト フォルダーに戻し、Web.config を変更して更新すると、アプリは再びスナップショットに戻りました。
質問
もちろん、私の質問は、Dart プロジェクト フォルダーを ServiceStack プロジェクト フォルダー内にネストすると ServiceStack.Razor がビューのレンダリングを停止する理由を誰か教えてもらえますか?
編集:詳細
Dart フォルダーには、次のファイルの種類が含まれています。
- pubspec.yaml
- pubspec.lock
- *.js
- *.dart
- *.json
- 「web」フォルダーから「packages」フォルダーへのショートカット (DartEditor が作成)
編集:Mythzのアドバイスからの詳細情報
?debug=リクエスト情報次の StartUpErrors が生成されました。
"StartUpErrors": [
{
"ErrorCode": "UnauthorizedAccessException",
"Message": "Access to the path 'D:\\Semi Da Vinci\\git\\BEAU\\BEAU.Beaufort.git\\Source\\BEAU.Beaufort.Website\\Dart\\packages\\analyzer' is denied.",
"StackTrace": "[Object: 12/03/2014 4:44:51 PM]:\n[REQUEST: ]\nSystem.UnauthorizedAccessException: Access to the path 'D:\\Semi Da Vinci\\git\\BEAU\\BEAU.Beaufort.git\\Source\\BEAU.Beaufort.Website\\Dart\\packages\\analyzer' is denied.\r\n at System.IO.__Error.WinIOError(Int32 errorCode, String maybeFullPath)\r\n at System.IO.FileSystemEnumerableIterator`1.CommonInit()\r\n at System.IO.FileSystemEnumerableIterator`1..ctor(String path, String originalUserPath, String searchPattern, SearchOption searchOption, SearchResultHandler`1 resultHandler, Boolean checkHost)\r\n at System.IO.DirectoryInfo.InternalGetFiles(String searchPattern, SearchOption searchOption)\r\n at ServiceStack.VirtualPath.FileSystemVirtualDirectory.GetMatchingFilesInDir(String globPattern)\r\n at ServiceStack.VirtualPath.AbstractVirtualDirectoryBase.<GetAllMatchingFiles>d__0.MoveNext()\r\n at ServiceStack.VirtualPath.AbstractVirtualDirectoryBase.<GetAllMatchingFiles>d__0.MoveNext()\r\n at ServiceStack.VirtualPath.AbstractVirtualDirectoryBase.<GetAllMatchingFiles>d__0.MoveNext()\r\n at ServiceStack.VirtualPath.AbstractVirtualDirectoryBase.<GetAllMatchingFiles>d__0.MoveNext()\r\n at System.Linq.Enumerable.<SelectManyIterator>d__14`2.MoveNext()\r\n at System.Linq.Enumerable.<DistinctIterator>d__81`1.MoveNext()\r\n at ServiceStack.Formats.MarkdownFormat.<FindMarkdownPages>d__7.MoveNext()\r\n at ServiceStack.Formats.MarkdownFormat.RegisterMarkdownPages(String dirPath)\r\n at ServiceStack.Formats.MarkdownFormat.Register(IAppHost appHost)\r\n at ServiceStack.ServiceStackHost.LoadPlugin(IPlugin[] plugins)",
"Errors": []
},
{
"ErrorCode": "UnauthorizedAccessException",
"Message": "Access to the path 'D:\\Semi Da Vinci\\git\\BEAU\\BEAU.Beaufort.git\\Source\\BEAU.Beaufort.Website\\Dart\\packages\\analyzer' is denied.",
"StackTrace": "[Object: 12/03/2014 4:44:51 PM]:\n[REQUEST: ]\nSystem.UnauthorizedAccessException: Access to the path 'D:\\Semi Da Vinci\\git\\BEAU\\BEAU.Beaufort.git\\Source\\BEAU.Beaufort.Website\\Dart\\packages\\analyzer' is denied.\r\n at System.IO.__Error.WinIOError(Int32 errorCode, String maybeFullPath)\r\n at System.IO.FileSystemEnumerableIterator`1.CommonInit()\r\n at System.IO.FileSystemEnumerableIterator`1..ctor(String path, String originalUserPath, String searchPattern, SearchOption searchOption, SearchResultHandler`1 resultHandler, Boolean checkHost)\r\n at System.IO.DirectoryInfo.InternalGetFiles(String searchPattern, SearchOption searchOption)\r\n at ServiceStack.VirtualPath.FileSystemVirtualDirectory.GetMatchingFilesInDir(String globPattern)\r\n at ServiceStack.VirtualPath.AbstractVirtualDirectoryBase.<GetAllMatchingFiles>d__0.MoveNext()\r\n at ServiceStack.VirtualPath.AbstractVirtualDirectoryBase.<GetAllMatchingFiles>d__0.MoveNext()\r\n at ServiceStack.VirtualPath.AbstractVirtualDirectoryBase.<GetAllMatchingFiles>d__0.MoveNext()\r\n at ServiceStack.VirtualPath.AbstractVirtualDirectoryBase.<GetAllMatchingFiles>d__0.MoveNext()\r\n at System.Linq.Enumerable.<SelectManyIterator>d__14`2.MoveNext()\r\n at System.Linq.Enumerable.<DistinctIterator>d__81`1.MoveNext()\r\n at System.Linq.Enumerable.WhereEnumerableIterator`1.MoveNext()\r\n at ServiceStack.EnumerableExtensions.Each[T](IEnumerable`1 values, Action`1 action)\r\n at ServiceStack.Razor.Managers.RazorViewManager.Init()\r\n at ServiceStack.Razor.RazorFormat.Init()\r\n at ServiceStack.Razor.RazorFormat.Register(IAppHost appHost)",
"Errors": []
},
{
"ErrorCode": "UnauthorizedAccessException",
"Message": "Access to the path 'D:\\Semi Da Vinci\\git\\BEAU\\BEAU.Beaufort.git\\Source\\BEAU.Beaufort.Website\\Dart\\packages\\analyzer' is denied.",
"StackTrace": "[Object: 12/03/2014 4:44:51 PM]:\n[REQUEST: ]\nSystem.UnauthorizedAccessException: Access to the path 'D:\\Semi Da Vinci\\git\\BEAU\\BEAU.Beaufort.git\\Source\\BEAU.Beaufort.Website\\Dart\\packages\\analyzer' is denied.\r\n at System.IO.__Error.WinIOError(Int32 errorCode, String maybeFullPath)\r\n at System.IO.FileSystemEnumerableIterator`1.CommonInit()\r\n at System.IO.FileSystemEnumerableIterator`1..ctor(String path, String originalUserPath, String searchPattern, SearchOption searchOption, SearchResultHandler`1 resultHandler, Boolean checkHost)\r\n at System.IO.DirectoryInfo.InternalGetFiles(String searchPattern, SearchOption searchOption)\r\n at ServiceStack.VirtualPath.FileSystemVirtualDirectory.GetMatchingFilesInDir(String globPattern)\r\n at ServiceStack.VirtualPath.AbstractVirtualDirectoryBase.<GetAllMatchingFiles>d__0.MoveNext()\r\n at ServiceStack.VirtualPath.AbstractVirtualDirectoryBase.<GetAllMatchingFiles>d__0.MoveNext()\r\n at ServiceStack.VirtualPath.AbstractVirtualDirectoryBase.<GetAllMatchingFiles>d__0.MoveNext()\r\n at ServiceStack.VirtualPath.AbstractVirtualDirectoryBase.<GetAllMatchingFiles>d__0.MoveNext()\r\n at System.Linq.Enumerable.<SelectManyIterator>d__14`2.MoveNext()\r\n at System.Linq.Enumerable.<DistinctIterator>d__81`1.MoveNext()\r\n at System.Linq.Enumerable.WhereEnumerableIterator`1.MoveNext()\r\n at ServiceStack.EnumerableExtensions.Each[T](IEnumerable`1 values, Action`1 action)\r\n at ServiceStack.Razor.Managers.RazorViewManager.Init()\r\n at ServiceStack.Razor.RazorFormat.Init()\r\n at ServiceStack.Razor.RazorFormat.Register(IAppHost appHost)\r\n at ServiceStack.ServiceStackHost.LoadPlugin(IPlugin[] plugins)",
"Errors": []
}
],
詳細に調べると、/packages の下のフォルダーはすべて、システム キャッシュ内の元のライブラリへのシンボリック リンクです (詳細はこちら: https://www.dartlang.org/tools/pub/faq.html )。
ServiceStack がこれらのシンボリック リンクでつまずいているようです。