1

私は、私がこれから与えることのないように、どれくらい詳細を私が与えることができるか分かりません。基本的に、私は2つのアプリを持っています。 1つは移行のためのコンソールアプリであり、もう1つは実際に自分のものを表示するウェブアプリです。 Webアプリケーションはコンソールアプリケーションでは動作しません。 I限り.NETコア、Windows Azureストレージコンソールアプリではクラッシュしますが、ウェブアプリではクラッシュしませんか?

using Microsoft.Extensions.Options; 
using Microsoft.AspNetCore.Hosting; 
using System.Threading.Tasks; 
using System.IO; 
using Microsoft.WindowsAzure.Storage; 
using mywebapp.Models; 

namespace mywebapp.Services 
{ 
    public class AzureService : IAzureService 
    { 
     private readonly AzureConfig _config; 
     private readonly CloudStorageAccount _storage; 

     public AzureService(IOptions<AzureConfig> config) 
     { 
      _config = config.Value; 

      _storage = CloudStorageAccount.Parse(_config.connectionString); 
     } 

     public async Task<bool> CreateCampus(string name) 
     { 
      try 
      { 
       var client = _storage.CreateCloudBlobClient(); 

       //Should create a container (folder) 
       var container = client.GetContainerReference(nameToContainer(name)); 
       await container.CreateIfNotExistsAsync(); 

       return true; 
      } 
      catch 
      { 
       return false; 
      } 
     } 

     private string nameToContainer(string name) 
     { 
      var newName = name.Replace("-", "with").ToLower(); 
      newName = newName.Replace(" ", "-").ToLower(); 

      if (newName.Length < 3) 
      { 
       newName = newName + "-zz"; 
      } 

      return newName; 
     } 
    } 
} 

:ここ

using System.Threading.Tasks; 
using Microsoft.WindowsAzure.Storage; 

namespace migration.Services 
{ 
    public class AzureService 
    { 
     private CloudStorageAccount _storage; 

     public AzureService() 
     { 
      _storage = CloudStorageAccount.Parse("DefaultEndpointsProtocol=https;AccountName=MYACCOUNTNAME;AccountKey=PRETENDTHISISRIGHT"); 
     } 

     public async Task<bool> CreateCampus(string name) 
     { 
      try 
      { 
       var client = _storage.CreateCloudBlobClient(); 

       //Should create a container (folder) 
       var container = client.GetContainerReference(nameToContainer(name)); 
       await container.CreateIfNotExistsAsync(); 

       return true; 
      } 
      catch 
      { 
       return false; 
      } 
     } 

     private string nameToContainer(string name) 
     { 
      var newName = name.Replace("-", "with").ToLower(); 
      newName = newName.Replace(" ", "-").ToLower(); 

      if (newName.Length < 3) 
      { 
       newName = newName + "-zz"; 
      } 

      return newName; 
     } 
    } 
} 

は私のWebアプリです:コンソールアプリケーションでは、それはすぐにここ

ライン23上の例外なく終了しますと、私のコンソールアプリです唯一の違いは、私はWebアプリケーションのappsettingsから私の接続文字列を取得しているが、コンソールアプリケーションではないことを伝えることができます。

{ 
    "version": "1.0.0-*", 
    "buildOptions": { 
    "emitEntryPoint": true, 
    "preserveCompilationContext": true 
    }, 
    "dependencies": { 
    "Microsoft.NETCore.App": { 
     "type": "platform", 
     "version": "1.0.1" 
    }, 
    "Microsoft.Extensions.Options.ConfigurationExtensions": "1.0.0", 
    "Microsoft.EntityFrameworkCore.Tools": "1.0.0-preview2-final", 
    "AWSSDK.Extensions.NETCore.Setup": "3.3.0.1", 
    "Microsoft.EntityFrameworkCore.SqlServer": "1.0.1", 
    "WindowsAzure.Storage": "7.2.1", 
    "Pomelo.EntityFrameworkCore.MySql": "1.0.1" 
    }, 
    "tools": { 
    "Microsoft.AspNetCore.Server.IISIntegration.Tools": "1.0.0-preview2-final", 
    "Microsoft.EntityFrameworkCore.Tools": { 
     "version": "1.0.0-preview2-final", 
     "imports": "portable-net45+win8+dnxcore50" 
    } 
    }, 
    "frameworks": { 
    "netcoreapp1.0": { 
     "imports": [ 
     "dnxcore50", 
     "portable-net451+win8" 
     ] 
    } 
    }, 
    "runtimeOptions": { 
    "configProperties": { 
     "System.GC.Server": true 
    } 
    } 
} 

WebアプリケーションProject.Jsonファイル:

{ 
    "dependencies": { 
    "Microsoft.NETCore.App": { 
     "version": "1.0.1", 
     "type": "platform" 
    }, 
    "Microsoft.AspNetCore.Diagnostics": "1.0.0", 
    "Microsoft.AspNetCore.Mvc": "1.0.1", 
    "Microsoft.AspNetCore.Routing": "1.0.1", 
    "Microsoft.AspNetCore.Server.IISIntegration": "1.0.0", 
    "Microsoft.AspNetCore.Server.Kestrel": "1.0.1", 
    "Microsoft.AspNetCore.StaticFiles": "1.0.0", 
    "Microsoft.Extensions.Configuration.EnvironmentVariables": "1.0.0", 
    "Microsoft.Extensions.Configuration.FileExtensions": "1.0.0", 
    "Microsoft.Extensions.Configuration.Json": "1.0.0", 
    "Microsoft.Extensions.Logging": "1.0.0", 
    "Microsoft.Extensions.Logging.Console": "1.0.0", 
    "Microsoft.Extensions.Logging.Debug": "1.0.0", 
    "Microsoft.Extensions.Options.ConfigurationExtensions": "1.0.0", 
    "Microsoft.VisualStudio.Web.BrowserLink.Loader": "14.0.0", 
    "System.Net.Http": "4.1.0", 
    "Microsoft.AspNetCore.Cors": "1.0.0", 
    "Microsoft.EntityFrameworkCore.Tools": "1.0.0-preview2-final", 
    "Microsoft.EntityFrameworkCore.SqlServer": "1.0.1", 
    "AWSSDK.Extensions.NETCore.Setup": "3.3.0.1", 
    "Microsoft.ApplicationInsights.AspNetCore": "1.0.2", 
    "Stormpath.AspNetCore": "0.8.1", 
    "WindowsAzure.Storage": "7.2.1" 
    }, 
    "tools": { 
    "Microsoft.AspNetCore.Razor.Tools": "1.0.0-preview2-final", 
    "Microsoft.AspNetCore.Server.IISIntegration.Tools": { 
     "version": "1.0.0-preview2-final", 
     "imports": "portable-net45+win8+dnxcore50" 
    }, 
    "Microsoft.EntityFrameworkCore.Tools": { 
     "version": "1.0.0-preview2-final", 
     "imports": "portable-net45+win8+dnxcore50" 
    } 
    }, 
    "frameworks": { 
    "netcoreapp1.0": { 
     "imports": [ 
     "dotnet5.6", 
     "portable-net45+win8" 
     ] 
    } 
    }, 
    "buildOptions": { 
    "emitEntryPoint": true, 
    "preserveCompilationContext": true 
    }, 
    "runtimeOptions": { 
    "configProperties": { 
     "System.GC.Server": true 
    } 
    }, 
    "publishOptions": { 
    "include": [ 
     "wwwroot", 
     "Views", 
     "appsettings.json", 
     "appsettings.Development.json", 
     "appsettings.Production.json", 
     "appsettings.Staging.json", 
     "apiKey.properties", 
     "stormpath.json", 
     "uploads", 
     "web.config" 
    ] 
    }, 
    "scripts": { 
    "postpublish": [ 
     "dotnet publish-iis --publish-folder %publish:OutputPath% --framework %publish:FullTargetFramework%" 
    ] 
    } 
} 

任意のアイデアそれは... コンソールProject.Jsonファイルに役立ちますか? WindowsとMac、WindowsAzure.Storageライブラリのさまざまなバージョン、.netコア1.0,1.0.1、および1.1でこれを試しました。 Visual StudioやVisual Studioのコードでは私には例外がありません。私のアプリケーションが終了コード0で閉じられたと伝えます。

ありがとう!

+2

どのように非同期方式を呼びますか?あなたはおそらく非同期voidメソッドから呼び出していますか? – juunas

+0

+1これを試してみて、コンソールアプリケーションとしてデバッグするのは良いチャンクを失ったが、まったく同じコードのWebアプリケーションとして機能した!どちらの場合もASP.NET Core 2.0を使用しています。 – bashirs

答えて

0

私の経験上、Microsoft.NETCore.Appのバージョンがプロジェクトの依存関係と一致しないことがあります。インストールディレクトリからMicrosoft.NETCore.Appのバージョンを確認できます。

enter image description here

Microsoft.NETcore.Appのバージョンが1.0.0であれば、project.jsonに1.0.1から1.0.0へのMicrosoft.NETCore.Appを変更しようとしていてください。わたしにはできる。

"dependencies": { 
    "Microsoft.NETCore.App": "1.0.0", 
    "Microsoft.Extensions.Options.ConfigurationExtensions": "1.0.0", 
    "Microsoft.EntityFrameworkCore.Tools": "1.0.0-preview2-final", 
    "AWSSDK.Extensions.NETCore.Setup": "3.3.0.1", 
    "Microsoft.EntityFrameworkCore.SqlServer": "1.0.1", 
    "WindowsAzure.Storage": "7.2.1", 
    "Pomelo.EntityFrameworkCore.MySql": "1.0.1" 
    }, 

Microsoft.NETcore.App 1.0.1をインストールした後で使用することもできます。我々はdownloadそれをMicrosoft official websiteからすることができます。 Microsoft.NETcore.App 1.0.1をインストールした後、対応するランタイムをのproject.jsonファイルに追加してください。 。 .netコアランタイムカテゴリの詳細については、articleを参照してください。

enter image description here

"runtimes": { 
    "win10-x64": {} 
    }, 

それはまた、正常に動作します。

enter image description here

関連する問題