0

この 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, IDictionary2 パラメータ)+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);
4

1 に答える 1

1

提供された情報から判断するのは難しいですが、私は助けてくれるでしょう.

接続文字列が異なる場合は、データも異なる可能性があると思います。

オブジェクトが設定されていない場合、通常はコード内でインスタンス化されていないものです。ただし、この場合、それはデータである可能性があります。すべてがどこかでインスタンス化されていると仮定すると、ScreenshotURL がない可能性はありますか? エラー メッセージはラムダ エラーの詳細を示しているため、select ステートメントに関連していると思われます。

于 2013-08-22T11:01:58.440 に答える