1

IIS Express 64 비트를 실행하기 위해 Visual Studio를 설정했지만 IIS Express 32 비트를 계속 시작합니다. 필자는 64 비트 호스트 환경에서만 작동하는 참조가 있기 때문에 64 비트 버전을 실행해야합니다.Visual Studio 2015 및 2017은 IIS Express 64 비트 버전을 시작하지 않습니다.

  • 내 프로젝트는 "ASP.NET 코어 웹 응용 프로그램 (.NET 프레임 워크)"나는 비주얼 스튜디오 (2015 년 2017 RC)를 설정 한
  • 하고, IIS 익스프레스 (64)를 사용하는 템플릿을 기반으로 만들어졌다 도구/옵션/"프로젝트 및 솔루션"/ "웹 프로젝트"로 이동하여 "웹 사이트 및 프로젝트에 IIS Express 의 64 비트 버전 사용"옵션을 선택하십시오.

이 문제는 비주얼 스튜디오 2015의 두 버전에서 발생 (기업 14.0.25431.01 업데이트 3) 2017 RC (전문 public.d15rel/15.0.26014.0)

나 '때문에 로컬 IIS를 사용할 수 없습니다 ASP.NET 코어를 사용합니다.

최악의 시나리오에서는 IIS Express를 수동으로 실행할 수 있지만 성공적으로 수행 할 수 없었습니다. IIS를 실행할 수 있었지만 웹 사이트를 실행하거나 디버깅 할 수 없었습니다.

추가 정보 (I 도움 https://host4asp.net/run-iis-express-from-the-command-line/이 페이지를 사용) 다음 다음

시스템은 IIS 익스프레스 64 비트를 사용하려고 나를 강제

  • 오류입니다 .AggregateException : 하나 이상의 오류가 발생했습니다. ---> System.NotSupportedException : 32 비트 프로세스에서 실행될 때 쿼리에서 추출한 파티션 라우팅 정보를 수 없습니다. 쿼리를 완료하고이 예외가 발생하지 않도록하려면 호스트 프로세스가 64 비트인지 확인하십시오. 실행 가능한 응용 프로그램의 경우이 작업은 빌드 탭의 프로젝트 속성 창에서 의 "32 비트 선호"옵션의 선택을 취소하여 수행 할 수 있습니다. VSTest 기반 테스트 프로젝트의 경우 Visual Studio Test 메뉴 옵션에서 테스트 -> 테스트 설정 -> 기본 프로세서 아키텍처를 X64, 을 선택하여 수행 할 수 있습니다. 로컬로 배포 된 ASP.NET 웹 응용 프로그램의 경우 도구 -> 옵션 -> 프로젝트 및 솔루션 -> 웹 프로젝트에서 "웹 사이트 및 프로젝트에 IIS Express의 64 비트 버전 사용"을 선택하여이 작업을 수행 할 수 있습니다. Microsoft.Azure.Documents.Query.DocumentQueryExecutionContextBase.d__0.MoveNext에서 Microsoft.Azure.Documents.Query.QueryPartitionProvider.GetPartitionedQueryExecutionInfo (SqlQuerySpec querySpec, PartitionKeyDefinition partitionKeyDefinition, 부울 requireFormattableOrderByQuery, 부울 isContinuationExpected)() --- 끝에서 예외가 (작업 작업) (작업 작업) Microsoft.Azure에 System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification에서 System.Runtime.CompilerServices.TaskAwaiter.ThrowForNonSuccess에서 --- 던져진 이전 위치에서 스택 추적 .Documents.Query.DocumentQueryExecutionContextFactory.d__3.MoveNext() --- 예외가 발생한 이전 위치의 스택 추적 끝 --- System.Runtime. 시스템에서 Microsoft.Azure.Documents.Linq.DocumentQuery 1.<CreateDocumentQueryExecutionContextAsync>d__12.MoveNext() --- End of inner exception stack trace --- at System.Threading.Tasks.Task.ThrowIfExceptional(Boolean includeTaskCanceledExceptions) at System.Threading.Tasks.Task 1.GetResultCore (부울 waitCompletionNotification)에서 System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification에서 CompilerServices.TaskAwaiter.ThrowForNonSuccess (작업 작업) (작업 작업). Threading.Tasks.Task 1.get_Result() at Microsoft.Azure.Documents.Linq.DocumentQuery 1.d__b.MoveNext() System.Collections.Generic.List 1..ctor(IEnumerable 1 컬렉션) System.Linq.Enumerable.ToList [TSource]에서
    (IEnumerable을 1 source) at TestWebWithDocDb.Controllers.TestController.tester3() at lambda_method(Closure , Object , Object[]) at Microsoft.AspNetCore.Mvc.Internal.ObjectMethodExecutor.Execute(Object target, Object[] parameters) at Microsoft.AspNetCore.Mvc.Internal.ControllerActionInvoker.<InvokeActionMethodAsync>d__27.MoveNext() --- End of stack trace from previous location where exception was thrown --- at System.Runtime.CompilerServices.TaskAwaiter.ThrowForNonSuccess(Task task) at System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(Task task) at Microsoft.AspNetCore.Mvc.Internal.ControllerActionInvoker.<InvokeNextActionFilterAsync>d__25.MoveNext() --- End of stack trace from previous location where exception was thrown --- at Microsoft.AspNetCore.Mvc.Internal.ControllerActionInvoker.Rethrow(ActionExecutedContext context) at Microsoft.AspNetCore.Mvc.Internal.ControllerActionInvoker.Next(State& next, Scope& scope, Object& state, Boolean& isCompleted) at Microsoft.AspNetCore.Mvc.Internal.ControllerActionInvoker.<InvokeNextResourceFilter>d__22.MoveNext() --- End of stack trace from previous location where exception was thrown --- at Microsoft.AspNetCore.Mvc.Internal.ControllerActionInvoker.Rethrow(ResourceExecutedContext context) at Microsoft.AspNetCore.Mvc.Internal.ControllerActionInvoker.Next(State& next, Scope& scope, Object& state, Boolean& isCompleted) at Microsoft.AspNetCore.Mvc.Internal.ControllerActionInvoker.<InvokeAsync>d__20.MoveNext() --- End of stack trace from previous location where exception was thrown --- at System.Runtime.CompilerServices.TaskAwaiter.ThrowForNonSuccess(Task task) at System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(Task task) at Microsoft.AspNetCore.Builder.RouterMiddleware.<Invoke>d__4.MoveNext() --- End of stack trace from previous location where exception was thrown --- at System.Runtime.CompilerServices.TaskAwaiter.ThrowForNonSuccess(Task task) at System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(Task task) at Microsoft.AspNetCore.Diagnostics.DeveloperExceptionPageMiddleware.<Invoke>d__7.MoveNext() ---> (Inner Exception #0) System.NotSupportedException: Partition routing information cannot be extracted from the query when running in a 32-bit process. To complete your query and avoid this exception, ensure that your host process is 64-bit. For Executable applications, this can be done by unchecking the "Prefer 32-bit" option in the project properties window, on the Build tab. For VSTest based test projects, this can be done by selecting Test->Test Settings->Default Processor Architecture as X64, from Visual Studio Test menu option. For locally deployed ASP.NET Web applications, this can be done by checking the "Use the 64 bit version of IIS Express for web sites and projects", under Tools->Options->Projects and Solutions->Web Projects. at Microsoft.Azure.Documents.Query.QueryPartitionProvider.GetPartitionedQueryExecutionInfo(SqlQuerySpec querySpec, PartitionKeyDefinition partitionKeyDefinition, Boolean requireFormattableOrderByQuery, Boolean isContinuationExpected) at Microsoft.Azure.Documents.Query.DocumentQueryExecutionContextBase.<GetPartitionedQueryExecutionInfoAsync>d__0.MoveNext() --- End of stack trace from previous location where exception was thrown --- at System.Runtime.CompilerServices.TaskAwaiter.ThrowForNonSuccess(Task task) at System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(Task task) at Microsoft.Azure.Documents.Query.DocumentQueryExecutionContextFactory.<CreateDocumentQueryExecutionContextAsync>d__3.MoveNext() --- End of stack trace from previous location where exception was thrown --- at System.Runtime.CompilerServices.TaskAwaiter.ThrowForNonSuccess(Task task) at System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(Task task) at Microsoft.Azure.Documents.Linq.DocumentQuery 1.d__12.MoveNext()에서 < ---

"시도가의 프로그램을로드하려고했습니다 :

  • I 설정 내 웹 프로젝트는 플랫폼의 x64을 대상으로하는 경우는 웹 프로젝트 말한다 프로그램 클래스에서 host.run()에 오류가 발생합니다 잘못된 형식입니다.
    (HRESULT에서 예외 : 0x8007000B). "

내가 32 비트 플랫폼을 통해 64 비트 버전을 실행하기 위해 노력하고있어 때문에 이런 추측 ( 익스프레스 IIS)

. 나는 샘플 코드를 부착하고있어 테스터 조치가 작동하지만 tester3 액션이 줄에 오류 발생 "= res.ToList() var에 목록;을"솔루션에 설치

using Microsoft.AspNetCore.Mvc; 
using Microsoft.Azure.Documents.Client; 
using System; 
using System.Linq; 
using SomeNamespace; 
using Newtonsoft.Json; 
using System.Globalization; 

namespace TestWebWithDocDb.Controllers 
{ 
    public class TestController : Controller 
    { 
     public IActionResult tester() 
     { 


      var client = new DocumentClient(new Uri("https://xxxxxxxxxxxxxx.documents.azure.com:443/"), "xxxxxxxxxxxxxx"); 

      //var query = "Select * from Main"; 
      var res = client.CreateDatabaseQuery().Where(db => db.Id.Equals("xxxxxxxxxxxxxx")).AsEnumerable().FirstOrDefault(); 


      return this.Content("OK", "text/plain"); 
     } 
     public IActionResult tester3() 
     { 
      var Query = "Select * From Main "; 

      var client = new DocumentClient(new Uri("https://xxxxxxxxxxxxxx.documents.azure.com:443/"), "xxxxxxxxxxxxxx"); 

      var databases = client.CreateDatabaseQuery().ToList(); 
      var a = client.AuthKey; 
      var _db = client.CreateDatabaseQuery().Where(db => db.Id.Equals("xxxxxxxxxxxxxx")).AsEnumerable().FirstOrDefault(); 
      if (_db == null) 
      { 
       throw new ApplicationException("no db"); 
      } 

      var _col = client.CreateDocumentCollectionQuery("dbs/" + _db.Id).Where(c => c.Id.Equals("Main")).AsEnumerable().FirstOrDefault(); 
      if (_col == null) 
      { 
       throw new ApplicationException("no collection"); 
      } 

      var _path = "dbs/" + _db.Id + "/colls/" + _col.Id; 


      var res = client.CreateDocumentQuery<BreederDocument>(_path, Query); 
      var list = res.ToList(); 
      var resOut = list; 
      return this.Json(resOut); 

     } 
    } 
} 




namespace SomeNamespace 
{ 
    public abstract class DocumentBase : Microsoft.Azure.Documents.Resource 
    { 

     protected String _changedBy; 
     protected DateTime _created; 
     protected Byte _DType; 
     protected DateTime _modified; 
     protected String _name; 
     protected Guid _UID; 
     protected String _version; 


     /// <summary> Constructor </summary> 
     public DocumentBase() 
     { 
      _changedBy = ""; 
      _created = DateTime.Now; 
      _DType = 0; 
      _modified = DateTime.Now; 
      _name = "unknown"; 
      base.Id = Guid.NewGuid().ToString(); 
      _version = "1.0"; 
     } 

     [JsonProperty("changedBy", Order = 202)] 
     public string ChangedBy 
     { 
      get { return _changedBy; } 
      set { _changedBy = value; } 
     } 

     [JsonProperty("created", Order = 200)] 
     public DateTime Created 
     { 
      get { return _created; } 
      set { _created = value; } 
     } 

     [JsonProperty("DType", Order = 0), JsonConverter(typeof(Newtonsoft.Json.Converters.StringEnumConverter))] 
     public Byte DType 
     { 
      get { return _DType; } 
      set { _DType = value; } 
     } 

     [JsonProperty("id", Order = 3)] 
     public string id 
     { 
      get { return base.Id; } 
      set 
      { 
       Guid UID = Guid.Empty; 
       if (!Guid.TryParse(value, out UID)) 
       { 
        throw new Exception("Cannot set id: value is not a valid GUID"); 
       } 
       else 
       { 
        base.Id = UID.ToString(); 
       } 

      } // end set 
     } // end property 


     [JsonProperty("modified", Order = 201)] 
     public DateTime Modified 
     { 
      get { return _modified; } 
      set { _modified = value; } 
     } 

     [JsonProperty("name", Order = 10)] 
     virtual public string Name 
     { 
      get { return _name; } 
      set { _name = value; } 
     } 

     [JsonIgnore] 
     public Guid UID 
     { 
      get { return Guid.Parse(id); } 
     } 

     [JsonProperty("version", Order = 1)] 
     public string Version 
     { 
      get { return _version; } 
      set { _version = value; } 
     } 


    } // end class 


    public class BreederDocument : DocumentBase 
    { 

     TextInfo tInfo; 

     public BreederDocument() : base() 
     { 
      tInfo = CultureInfo.CurrentCulture.TextInfo; 
      _DType = 10; 
      //_AccountID = Nothing 
     } 

     /// <summary> The AccountID for this breeder </summary> 
     /// <returns></returns> 
     [JsonProperty("accountID", Order = 9)] 
     public string AccountID 
     { 
      get { return _AccountID; } 
      private set { _AccountID = value; } 
     } 
     private string _AccountID; 

     [JsonProperty("name", Order = 10)] 
     public override string Name 
     { 
      get { return _name; } 
      set 
      { 
       if (value != null) { value = tInfo.ToTitleCase(value); }; 
       if (_name != value) 
       { 
        _name = value; 
       } 
      } 
     } 

     /// <summary> Short Name </summary> 
     /// <returns></returns> 
     [JsonProperty("shortName", NullValueHandling = NullValueHandling.Ignore, Order = 11)] 
     public string ShortName 
     { 
      get { return _ShortName; } 
      set 
      { 
       if (value != null) { value = tInfo.ToTitleCase(value); }; 
       if (_ShortName != value) 
       { 
        _ShortName = value; 
       } 
      } 
     } 
     private string _ShortName; 

     /// <summary> Kennel Name </summary> 
     /// <returns></returns> 
     [JsonProperty("kennelName", NullValueHandling = NullValueHandling.Ignore, Order = 12)] 
     public string KennelName 
     { 
      get { return _KennelName; } 
      set 
      { 
       if (value != null) { value = tInfo.ToTitleCase(value); }; 
       if (_KennelName != value) 
       { 
        _KennelName = value; 
       } 
      } 
     } 
     private string _KennelName; 





     [JsonProperty("webSite", Order = 22)] 
     public string WebSite 
     { 
      get { return _WebSite; } 
      set { _WebSite = value; } 
     } 

     private string _WebSite; 
     [JsonProperty("sponsored", NullValueHandling = NullValueHandling.Ignore, Order = 30)] 
     public string Sponsored 
     { 
      get { return _Sponsored; } 
      set { _Sponsored = value; } 
     } 
     private string _Sponsored; 



     [JsonProperty("initialPassword", NullValueHandling = NullValueHandling.Ignore, Order = 50)] 
     public string InitialPassword 
     { 
      get { return _InitialPassword; } 
      set { _InitialPassword = value; } 
     } 
     private string _InitialPassword = null; 



    } // end class 

} // end namespace 

NuGet 패키지 :.. NuGet packages installed in solution

+0

당신이 사용하는 Microsoft.Azure.DocumentDB.Core의 버전? 나는 그것이 1.0.0 (며칠 전에 공개됨)이라고 가정하고있다. Azure 웹 사이트가 현재 .NET Core 응용 프로그램 용 32 비트 호스트 만 지원하므로 Azure 웹 사이트에이 응용 프로그램을 배포하는 경우이 문제가 발생할 수 있지만 IIS Express를 설정하면 예상대로 작동해야합니다. 64 비트 (설명대로).Azure 웹 사이트가 아니라 로컬 IIS Express에 대해 실행 중이십니까? 어쨌든,이 문제가있는 샘플 코드를 보내 주시면 끝까지 시험해 보겠습니다. –

+0

안녕하세요 Rajesh, Microsoft.Azure.DocumentDB 버전 1.11.1 (CORE가 아닌)을 사용하고 있습니다. 문제의 설명에 실수를 한 것 같습니다. ".NET Core Web Application (.NET Framework)"템플릿 프로젝트를 사용했습니다. \t \t 질문 맨 아래에 샘플 코드를 추가했습니다. 고맙습니다. –

답변

0

아래 이미지와 같이 웹 프로젝트 (* .csproj)의 태그 RuntimeIdentifier를 수정하여 VS 2017에서 작동하도록 만들 수있었습니다.

RuntimeIdentifier가 win7-x86에서 win7-x64로 변경되었습니다. 이 변경으로 IIS Express 64 비트가로드되었습니다.

속성에서 RuntimeIdentifier를 변경할 수 없으므로 파일에서 직접 변경해야합니다.

이러한 변경 후 IIS Express 64 비트가 실행되기 시작했고 오류가 다시 발생하지 않았습니다.

*.csproj image

0

System.NotSupportedException : 32 비트 프로세스에서 실행 중일 때 쿼리에서 파티션 라우팅 정보를 추출 할 수 없습니다.

제공 한 오류에 따르면, 나는 당신의 수집 모드가 분할되었다고 생각했습니다. 이 오류에 대한 자세한 정보는 git에서 issue을 참조하십시오. DocumentDb에서 파티션 라우팅 기능을 사용하지 않으면 코드를 변경하고 FeedOptions을 제공하여 EnableCrossPartitionQuery을 비활성화하십시오.

+0

Bruce, 우리는 단일 파티션 콜렉션을 사용하고 있으며 또한 FeedOptions 옵션을 추가했습니다. defaultOptions = new FeedOptions {EnableCrossPartitionQuery = false}; 하지만 여전히 같은 오류가 발생합니다. 하지만 여기서 가장 큰 문제는 VS가 64 비트 버전의 IIS를 시작하지 않는다는 것입니다. 이 문제에 대한 어떤 생각? 도와 줘서 고마워. –

+0

로컬 측에서이 문제를 테스트 한 결과 IIS Express가 항상 웹 사이트 및 프로젝트에 IIS Express의 64 비트 버전 사용 옵션을 무시하고 NETCore 웹 응용 프로그램 용 32 비트로 실행된다는 것을 알았습니다. 클래식 웹 응용 프로그램은 사용자가 구성한대로 특정 비트로 IIS Express 내에서 실행됩니다. 시나리오에서는 단일 파티션 컬렉션을 사용하고 있으므로 오류가 혼동되었습니다. 이 문제를 해결하기 위해 고전적인 웹 응용 프로그램을 만들려고 할 수 있다고 가정했습니다. –