この MVC アプリをローカルホスト (Windows 8 を実行しているマシン) にデプロイしましたが、期待どおりに動作します。インストール フォルダーとサーバー上のフォルダーの唯一の違いは、接続文字列です。しかし、サーバー マシン (Windows Server 2008) に展開しようとすると、次の奇妙なエラーが発生します。
[NullReferenceException: Object reference not set to an instance of an object.]
PicknikMVC.ViewModels.ApplicationViewModel..ctor(Application app) in c:\Builds\workspace\Picknik\AppStoreService\target\checkout\AppStoreService\PicknikMVC\ViewModels\Application\ApplicationViewModel.cs:23
PicknikMVC.Controllers.Application.ShowController.Execute(String appid) in c:\Builds\workspace\Picknik\AppStoreService\target\checkout\AppStoreService\PicknikMVC\Controllers\Application\ShowController.cs:59
lambda_method(Closure , ControllerBase , Object[] ) +126
System.Web.Mvc.ReflectedActionDescriptor.Execute(ControllerContext controllerContext, IDictionary
2 パラメータ)+247 System.Web.Mvc.ControllerActionInvoker.InvokeActionMethod(ControllerContext controllerContext、ActionDescriptor actionDescriptor、IDictionary2 parameters) +38
System.Web.Mvc.Async.<>c__DisplayClass39.<BeginInvokeActionMethodWithFilters>b__33() +119
System.Web.Mvc.Async.<>c__DisplayClass4f.<InvokeActionMethodFilterAsynchronously>b__49() +452
System.Web.Mvc.Async.<>c__DisplayClass37.<BeginInvokeActionMethodWithFilters>b__36(IAsyncResult asyncResult) +15
System.Web.Mvc.Async.<>c__DisplayClass2a.<BeginInvokeAction>b__20() +31
System.Web.Mvc.Async.<>c__DisplayClass25.<BeginInvokeAction>b__22(IAsyncResult asyncResult) +230
System.Web.Mvc.<>c__DisplayClass1d.<BeginExecuteCore>b__18(IAsyncResult asyncResult) +28
System.Web.Mvc.Async.<>c__DisplayClass4.<MakeVoidDelegate>b__3(IAsyncResult ar) +15
System.Web.Mvc.Controller.EndExecuteCore(IAsyncResult asyncResult) +53
System.Web.Mvc.Async.<>c__DisplayClass4.<MakeVoidDelegate>b__3(IAsyncResult ar) +15
System.Web.Mvc.<>c__DisplayClass8.<BeginProcessRequest>b__3(IAsyncResult asyncResult) +42
System.Web.Mvc.Async.<>c__DisplayClass4.<MakeVoidDelegate>b__3(IAsyncResult ar) +15
System.Web.CallHandlerExecutionStep.System.Web.HttpApplication.IExecutionStep.Execute() +606
System.Web.HttpApplication.ExecuteStep(IExecutionStep step, Boolean& completedSynchronously) +288
これが発生するアプリ内のコードは、基本的に、データベースからの情報を使用して特定のクラスの新しいオブジェクトをインスタンス化しています。明らかな問題はありますか?接続文字列に問題があるのでしょうか、それとも別の問題でしょうか?
AppViewModel:
public class ApplicationViewModel
{
public int App_ID { get; set; }
public string Title { get; set; }
public string Developer { get; set; }
public string DeveloperURL { get; set; }
public bool IsImportant { get; set; }
public IEnumerable<ScreenshotPairViewModel> Screenshots { get; set; }
public ApplicationViewModel(PicknikData.Application app)
{
App_ID = app.App_ID;
Title = app.Title;
Developer = app.Developer;
DeveloperURL = app.DeveloperURL;
if (app.IsImportant.HasValue)
{
IsImportant = app.IsImportant.Value;
}
Screenshots = app.ScreenshotURLs.Select(p => new ScreenshotPairViewModel(p.Screenshot_URL,p.FK_Device)).ToList();
}
}
およびコントローラーのコード:
viewModel.Application = new ApplicationViewModel(app);