44,000원
다른 수강생들이 자주 물어보는 질문이 궁금하신가요?
- 미해결[C#과 유니티로 만드는 MMORPG 게임 개발 시리즈] Part6: 웹 서버
Unable to complete SSL connection 문제가 발생을 합니다.
Unable to complete SSL connection이 발생하는데 별도로 인증을 해줘야 하는것인가요? Unable to complete SSL connection[0] [ ]안에 리스폰스코드가 0이 나오네요
- 미해결[C#과 유니티로 만드는 MMORPG 게임 개발 시리즈] Part6: 웹 서버
ASP .net core 어떤 프로젝트로 만들어야 할지 모르겠습니다.
ASP.NET Core 둘러보기 현재 설치 상태입니다. 강좌 환경 설정 동영상 1:41초에 ASP.NET Core 웹 어플리케이션이 없는것 같습니다. 웹 응용 프로그램(모델-뷰-컨트롤러)로 진행해도 괜찮을까요? 그렇지 않다면 어느 부분의 설치가 누락된 걸까요?
- 해결됨[C#과 유니티로 만드는 MMORPG 게임 개발 시리즈] Part6: 웹 서버
EF 업데이트 관련 질문.
안녕하세요. EF 관련해서 질문이 있어 글을 적습니다. 우선 DB관련 강의는 구매 해놓고 아직 보지 않은 상태에서 본 강의의 EF 내용을 기준으로 여쭤보는 부분 죄송합니당. ORM의 경우 코드에서 객체의 값을 바꾸고 Save함으로써 그 내용이 DB에 적용되기 때문에 작업자가 매우 편리하게 사용할 수 있는 것으로 이해하였는데요. 그런데 저 Save의 경우 실제 DB의 모든 값을 바꾸게 되는것일까요? 아니면 변경된 부분만을 EF가 알아서 판단하여 Update해 주는 방식인 것일까요? 전자의 경우 바뀐 값은 하나인데 모든 데이터를 통째로 갈아 치운다면, Update하는 것보다 상대적으로 DB 트래픽 낭비 또한 심하게 될것 같은데 제 생각이 맞는 것일까요? 답변 부탁 드리겠습니다!
- 미해결[C#과 유니티로 만드는 MMORPG 게임 개발 시리즈] Part6: 웹 서버
db에 여러 테이블을 같이 get 할 수 있는 방법?
예를 들면 [gameresult]라는 테이블이 게임 종류별로 여러 개 있다고 가정하고 유저별로 스코어가 테이블(gameresult1, gameresult2 ...)별로 저장되어있다고 했을 때, 각각 게임에 대한 유져별 스코어를 get하고싶은데, 테이블별로 하나씩 읽어서 유니티쪽에서 처리하면 뭔가 부하가 많이 걸릴 것 같아서.. 한번에 읽어서 나눠서 처리하는게 맞을거 같은데 방법이 있을까요? (테이블별 데이터모델 구조는 같습니다) 고민해보니 db구조가 잘못되있나 싶기도하고, 테이블은 하나로 고정하고 게임 종류 컬럼을 추가해서 분리를 했으면 예제로도 충분히 처리를 할 수 있었을텐데,, 하는 생각도 들지만, 혹시나해서 여러 테이블을 같이 참조해서 불러올 수 있는 방법이 있을지 알고싶습니다! 감사합니다.
- 미해결[C#과 유니티로 만드는 MMORPG 게임 개발 시리즈] Part6: 웹 서버
FROMJSON으로 데이터 받을때 NULL 뜨는 문제??
public class GameResult { public string UserName; public int Score; } string json = uwr.downloadHandler.text; Debug.Log(json); -> 데이터 찍힘 GameResult gameResult = JsonUtility.FromJson<GameResult>(json); Debug.Log(gameResult.UserName); -> null로 나옴 {"id":1,"userId":1,"userName":"A","score":999,"date":"2021-02-01T00:00:00"} 읽힌 데이터구요.. 왜 null로 나오는지 모르겠어여.. A가 나와야하는 거 아닌지.. 궁금합니다! (아이디로 검색했습니다!api/ranking/1)
- 미해결[C#과 유니티로 만드는 MMORPG 게임 개발 시리즈] Part6: 웹 서버
DownloadHandlerBuffer, fromJson 이 2개는 다른 함수인거겠죠?
Unity 시간에서는 fromJson으로 받아서 데이터를 분류?하는 작업을 했었는데, 이번에는 DownloadHandlerBuffer를 사용하시더라구요. 서버에서 보내주는 데이터 포멧이 json형태 인줄 알았는데,,, 그냥List 형태로 보내주는 거라 그런건가요? DownloadHandlerBuffer의 경우 String을 반환하는거같은데, 이럴 경우 분류를 한다면 일일이 잘라서 사용해야하는지.. unity시간에 배운건 fromjson을 사용해서 편리하게 분류를 할 수 있다 라고 배운거 같은데 적용이 힘드네요 ㅎㅎ.. 서버에서 보내준 데이터를 유니티 씬에서 디스플레이 하는게 목표입니다 ㅋ
- 미해결[C#과 유니티로 만드는 MMORPG 게임 개발 시리즈] Part6: 웹 서버
인증서 오류같은게 발생했습니다
세부 내용 An unhandled exception occurred while processing the request. AuthenticationException: The remote certificate is invalid according to the validation procedure. System.Net.Security.SslStream.StartSendAuthResetSignal(ProtocolToken message, AsyncProtocolRequest asyncRequest, ExceptionDispatchInfo exception) HttpRequestException: The SSL connection could not be established, see inner exception. System.Net.Http.ConnectHelper.EstablishSslConnectionAsyncCore(Stream stream, SslClientAuthenticationOptions sslOptions, CancellationToken cancellationToken) Stack Query Cookies Headers Routing AuthenticationException: The remote certificate is invalid according to the validation procedure. System.Net.Security.SslStream.StartSendAuthResetSignal(ProtocolToken message, AsyncProtocolRequest asyncRequest, ExceptionDispatchInfo exception) System.Net.Security.SslStream.CheckCompletionBeforeNextReceive(ProtocolToken message, AsyncProtocolRequest asyncRequest) System.Net.Security.SslStream.StartSendBlob(byte[] incoming, int count, AsyncProtocolRequest asyncRequest) System.Net.Security.SslStream.ProcessReceivedBlob(byte[] buffer, int count, AsyncProtocolRequest asyncRequest) System.Net.Security.SslStream.StartReadFrame(byte[] buffer, int readBytes, AsyncProtocolRequest asyncRequest) System.Net.Security.SslStream.StartReceiveBlob(byte[] buffer, AsyncProtocolRequest asyncRequest) System.Net.Security.SslStream.CheckCompletionBeforeNextReceive(ProtocolToken message, AsyncProtocolRequest asyncRequest) System.Net.Security.SslStream.StartSendBlob(byte[] incoming, int count, AsyncProtocolRequest asyncRequest) System.Net.Security.SslStream.ProcessReceivedBlob(byte[] buffer, int count, AsyncProtocolRequest asyncRequest) System.Net.Security.SslStream.StartReadFrame(byte[] buffer, int readBytes, AsyncProtocolRequest asyncRequest) System.Net.Security.SslStream.StartReceiveBlob(byte[] buffer, AsyncProtocolRequest asyncRequest) System.Net.Security.SslStream.CheckCompletionBeforeNextReceive(ProtocolToken message, AsyncProtocolRequest asyncRequest) System.Net.Security.SslStream.StartSendBlob(byte[] incoming, int count, AsyncProtocolRequest asyncRequest) System.Net.Security.SslStream.ProcessReceivedBlob(byte[] buffer, int count, AsyncProtocolRequest asyncRequest) System.Net.Security.SslStream.StartReadFrame(byte[] buffer, int readBytes, AsyncProtocolRequest asyncRequest) System.Net.Security.SslStream.PartialFrameCallback(AsyncProtocolRequest asyncRequest) System.Net.Security.SslStream.ThrowIfExceptional() System.Net.Security.SslStream.InternalEndProcessAuthentication(LazyAsyncResult lazyResult) System.Net.Security.SslStream.EndProcessAuthentication(IAsyncResult result) System.Net.Security.SslStream.EndAuthenticateAsClient(IAsyncResult asyncResult) System.Net.Security.SslStream+<>c.<AuthenticateAsClientAsync>b__65_1(IAsyncResult iar) System.Threading.Tasks.TaskFactory<TResult>.FromAsyncCoreLogic(IAsyncResult iar, Func<IAsyncResult, TResult> endFunction, Action<IAsyncResult> endAction, Task<TResult> promise, bool requiresSynchronization) System.Net.Http.ConnectHelper.EstablishSslConnectionAsyncCore(Stream stream, SslClientAuthenticationOptions sslOptions, CancellationToken cancellationToken) Show raw exception details System.Security.Authentication.AuthenticationException: The remote certificate is invalid according to the validation procedure. at System.Net.Security.SslStream.StartSendAuthResetSignal(ProtocolToken message, AsyncProtocolRequest asyncRequest, ExceptionDispatchInfo exception) at System.Net.Security.SslStream.CheckCompletionBeforeNextReceive(ProtocolToken message, AsyncProtocolRequest asyncRequest) at System.Net.Security.SslStream.StartSendBlob(Byte[] incoming, Int32 count, AsyncProtocolRequest asyncRequest) at System.Net.Security.SslStream.ProcessReceivedBlob(Byte[] buffer, Int32 count, AsyncProtocolRequest asyncRequest) at System.Net.Security.SslStream.StartReadFrame(Byte[] buffer, Int32 readBytes, AsyncProtocolRequest asyncRequest) at System.Net.Security.SslStream.StartReceiveBlob(Byte[] buffer, AsyncProtocolRequest asyncRequest) at System.Net.Security.SslStream.CheckCompletionBeforeNextReceive(ProtocolToken message, AsyncProtocolRequest asyncRequest) at System.Net.Security.SslStream.StartSendBlob(Byte[] incoming, Int32 count, AsyncProtocolRequest asyncRequest) at System.Net.Security.SslStream.ProcessReceivedBlob(Byte[] buffer, Int32 count, AsyncProtocolRequest asyncRequest) at System.Net.Security.SslStream.StartReadFrame(Byte[] buffer, Int32 readBytes, AsyncProtocolRequest asyncRequest) at System.Net.Security.SslStream.StartReceiveBlob(Byte[] buffer, AsyncProtocolRequest asyncRequest) at System.Net.Security.SslStream.CheckCompletionBeforeNextReceive(ProtocolToken message, AsyncProtocolRequest asyncRequest) at System.Net.Security.SslStream.StartSendBlob(Byte[] incoming, Int32 count, AsyncProtocolRequest asyncRequest) at System.Net.Security.SslStream.ProcessReceivedBlob(Byte[] buffer, Int32 count, AsyncProtocolRequest asyncRequest) at System.Net.Security.SslStream.StartReadFrame(Byte[] buffer, Int32 readBytes, AsyncProtocolRequest asyncRequest) at System.Net.Security.SslStream.PartialFrameCallback(AsyncProtocolRequest asyncRequest) --- End of stack trace from previous location where exception was thrown --- at System.Net.Security.SslStream.ThrowIfExceptional() at System.Net.Security.SslStream.InternalEndProcessAuthentication(LazyAsyncResult lazyResult) at System.Net.Security.SslStream.EndProcessAuthentication(IAsyncResult result) at System.Net.Security.SslStream.EndAuthenticateAsClient(IAsyncResult asyncResult) at System.Net.Security.SslStream.<>c.<AuthenticateAsClientAsync>b__65_1(IAsyncResult iar) at System.Threading.Tasks.TaskFactory`1.FromAsyncCoreLogic(IAsyncResult iar, Func`2 endFunction, Action`1 endAction, Task`1 promise, Boolean requiresSynchronization) --- End of stack trace from previous location where exception was thrown --- at System.Net.Http.ConnectHelper.EstablishSslConnectionAsyncCore(Stream stream, SslClientAuthenticationOptions sslOptions, CancellationToken cancellationToken) HttpRequestException: The SSL connection could not be established, see inner exception. System.Net.Http.ConnectHelper.EstablishSslConnectionAsyncCore(Stream stream, SslClientAuthenticationOptions sslOptions, CancellationToken cancellationToken) System.Threading.Tasks.ValueTask<TResult>.get_Result() System.Runtime.CompilerServices.ConfiguredValueTaskAwaitable<TResult>+ConfiguredValueTaskAwaiter.GetResult() System.Net.Http.HttpConnectionPool.ConnectAsync(HttpRequestMessage request, bool allowHttp2, CancellationToken cancellationToken) System.Threading.Tasks.ValueTask<TResult>.get_Result() System.Runtime.CompilerServices.ConfiguredValueTaskAwaitable<TResult>+ConfiguredValueTaskAwaiter.GetResult() System.Net.Http.HttpConnectionPool.CreateHttp11ConnectionAsync(HttpRequestMessage request, CancellationToken cancellationToken) System.Threading.Tasks.ValueTask<TResult>.get_Result() System.Runtime.CompilerServices.ConfiguredValueTaskAwaitable<TResult>+ConfiguredValueTaskAwaiter.GetResult() System.Net.Http.HttpConnectionPool.GetHttpConnectionAsync(HttpRequestMessage request, CancellationToken cancellationToken) System.Threading.Tasks.ValueTask<TResult>.get_Result() System.Runtime.CompilerServices.ConfiguredValueTaskAwaitable<TResult>+ConfiguredValueTaskAwaiter.GetResult() System.Net.Http.HttpConnectionPool.SendWithRetryAsync(HttpRequestMessage request, bool doRequestAuth, CancellationToken cancellationToken) System.Net.Http.RedirectHandler.SendAsync(HttpRequestMessage request, CancellationToken cancellationToken) System.Net.Http.DiagnosticsHandler.SendAsync(HttpRequestMessage request, CancellationToken cancellationToken) Microsoft.Extensions.Http.Logging.LoggingHttpMessageHandler.SendAsync(HttpRequestMessage request, CancellationToken cancellationToken) Microsoft.Extensions.Http.Logging.LoggingScopeHttpMessageHandler.SendAsync(HttpRequestMessage request, CancellationToken cancellationToken) System.Net.Http.HttpClient.FinishSendAsyncBuffered(Task<HttpResponseMessage> sendTask, HttpRequestMessage request, CancellationTokenSource cts, bool disposeCts) RankingApp.Data.Services.RankingService.GetGameResultsAsync() in RankingService.cs + var result = await _httpClient.GetAsync("api/ranking"); RankingApp.Pages.Ranking.OnInitializedAsync() in Ranking.razor + _gameResults = await RankingService.GetGameResultsAsync(); Microsoft.AspNetCore.Components.ComponentBase.RunInitAndSetParametersAsync() Microsoft.AspNetCore.Components.RenderTree.Renderer.GetErrorHandledTask(Task taskToHandle) Microsoft.AspNetCore.Components.Rendering.HtmlRenderer.HandleException(Exception exception) Microsoft.AspNetCore.Components.RenderTree.Renderer.GetErrorHandledTask(Task taskToHandle) Microsoft.AspNetCore.Components.RenderTree.Renderer.ProcessAsynchronousWork() Microsoft.AspNetCore.Components.RenderTree.Renderer.RenderRootComponentAsync(int componentId, ParameterView initialParameters) Microsoft.AspNetCore.Components.Rendering.HtmlRenderer.CreateInitialRenderAsync(Type componentType, ParameterView initialParameters) Microsoft.AspNetCore.Components.Rendering.HtmlRenderer.RenderComponentAsync(Type componentType, ParameterView initialParameters) Microsoft.AspNetCore.Components.Rendering.RendererSynchronizationContext+<>c__11<TResult>+<<InvokeAsync>b__11_0>d.MoveNext() Microsoft.AspNetCore.Mvc.ViewFeatures.StaticComponentRenderer.PrerenderComponentAsync(ParameterView parameters, HttpContext httpContext, Type componentType) Microsoft.AspNetCore.Mvc.ViewFeatures.ComponentRenderer.PrerenderedServerComponentAsync(HttpContext context, ServerComponentInvocationSequence invocationId, Type type, ParameterView parametersCollection) Microsoft.AspNetCore.Mvc.ViewFeatures.ComponentRenderer.RenderComponentAsync(ViewContext viewContext, Type componentType, RenderMode renderMode, object parameters) Microsoft.AspNetCore.Mvc.TagHelpers.ComponentTagHelper.ProcessAsync(TagHelperContext context, TagHelperOutput output) Microsoft.AspNetCore.Razor.Runtime.TagHelpers.TagHelperRunner.<RunAsync>g__Awaited|0_0(Task task, TagHelperExecutionContext executionContext, int i, int count) RankingApp.Pages.Pages__Host.<ExecuteAsync>b__14_1() in _Host.cshtml + <component type="typeof(App)" render-mode="ServerPrerendered" /> Microsoft.AspNetCore.Razor.Runtime.TagHelpers.TagHelperExecutionContext.SetOutputContentAsync() RankingApp.Pages.Pages__Host.ExecuteAsync() in _Host.cshtml + Layout = null; Microsoft.AspNetCore.Mvc.Razor.RazorView.RenderPageCoreAsync(IRazorPage page, ViewContext context) Microsoft.AspNetCore.Mvc.Razor.RazorView.RenderPageAsync(IRazorPage page, ViewContext context, bool invokeViewStarts) Microsoft.AspNetCore.Mvc.Razor.RazorView.RenderAsync(ViewContext context) Microsoft.AspNetCore.Mvc.ViewFeatures.ViewExecutor.ExecuteAsync(ViewContext viewContext, string contentType, Nullable<int> statusCode) Microsoft.AspNetCore.Mvc.ViewFeatures.ViewExecutor.ExecuteAsync(ViewContext viewContext, string contentType, Nullable<int> statusCode) Microsoft.AspNetCore.Mvc.Infrastructure.ResourceInvoker.<InvokeNextResultFilterAsync>g__Awaited|29_0<TFilter, TFilterAsync>(ResourceInvoker invoker, Task lastTask, State next, Scope scope, object state, bool isCompleted) Microsoft.AspNetCore.Mvc.Infrastructure.ResourceInvoker.Rethrow(ResultExecutedContextSealed context) Microsoft.AspNetCore.Mvc.Infrastructure.ResourceInvoker.ResultNext<TFilter, TFilterAsync>(ref State next, ref Scope scope, ref object state, ref bool isCompleted) Microsoft.AspNetCore.Mvc.Infrastructure.ResourceInvoker.<InvokeResultFilters>g__Awaited|27_0(ResourceInvoker invoker, Task lastTask, State next, Scope scope, object state, bool isCompleted) Microsoft.AspNetCore.Mvc.Infrastructure.ResourceInvoker.<InvokeNextResourceFilter>g__Awaited|24_0(ResourceInvoker invoker, Task lastTask, State next, Scope scope, object state, bool isCompleted) Microsoft.AspNetCore.Mvc.Infrastructure.ResourceInvoker.Rethrow(ResourceExecutedContextSealed context) Microsoft.AspNetCore.Mvc.Infrastructure.ResourceInvoker.Next(ref State next, ref Scope scope, ref object state, ref bool isCompleted) Microsoft.AspNetCore.Mvc.Infrastructure.ResourceInvoker.<InvokeFilterPipelineAsync>g__Awaited|19_0(ResourceInvoker invoker, Task lastTask, State next, Scope scope, object state, bool isCompleted) Microsoft.AspNetCore.Mvc.Infrastructure.ResourceInvoker.<InvokeAsync>g__Awaited|17_0(ResourceInvoker invoker, Task task, IDisposable scope) Microsoft.AspNetCore.Routing.EndpointMiddleware.<Invoke>g__AwaitRequestTask|6_0(Endpoint endpoint, Task requestTask, ILogger logger) Microsoft.AspNetCore.Authorization.AuthorizationMiddleware.Invoke(HttpContext context) Microsoft.AspNetCore.Authentication.AuthenticationMiddleware.Invoke(HttpContext context) Microsoft.AspNetCore.Diagnostics.EntityFrameworkCore.MigrationsEndPointMiddleware.Invoke(HttpContext context) Microsoft.AspNetCore.Diagnostics.EntityFrameworkCore.DatabaseErrorPageMiddleware.Invoke(HttpContext httpContext) Microsoft.AspNetCore.Diagnostics.EntityFrameworkCore.DatabaseErrorPageMiddleware.Invoke(HttpContext httpContext) Microsoft.AspNetCore.Diagnostics.DeveloperExceptionPageMiddleware.Invoke(HttpContext context) Show raw exception details System.Net.Http.HttpRequestException: The SSL connection could not be established, see inner exception. ---> System.Security.Authentication.AuthenticationException: The remote certificate is invalid according to the validation procedure. at System.Net.Security.SslStream.StartSendAuthResetSignal(ProtocolToken message, AsyncProtocolRequest asyncRequest, ExceptionDispatchInfo exception) at System.Net.Security.SslStream.CheckCompletionBeforeNextReceive(ProtocolToken message, AsyncProtocolRequest asyncRequest) at System.Net.Security.SslStream.StartSendBlob(Byte[] incoming, Int32 count, AsyncProtocolRequest asyncRequest) at System.Net.Security.SslStream.ProcessReceivedBlob(Byte[] buffer, Int32 count, AsyncProtocolRequest asyncRequest) at System.Net.Security.SslStream.StartReadFrame(Byte[] buffer, Int32 readBytes, AsyncProtocolRequest asyncRequest) at System.Net.Security.SslStream.StartReceiveBlob(Byte[] buffer, AsyncProtocolRequest asyncRequest) at System.Net.Security.SslStream.CheckCompletionBeforeNextReceive(ProtocolToken message, AsyncProtocolRequest asyncRequest) at System.Net.Security.SslStream.StartSendBlob(Byte[] incoming, Int32 count, AsyncProtocolRequest asyncRequest) at System.Net.Security.SslStream.ProcessReceivedBlob(Byte[] buffer, Int32 count, AsyncProtocolRequest asyncRequest) at System.Net.Security.SslStream.StartReadFrame(Byte[] buffer, Int32 readBytes, AsyncProtocolRequest asyncRequest) at System.Net.Security.SslStream.StartReceiveBlob(Byte[] buffer, AsyncProtocolRequest asyncRequest) at System.Net.Security.SslStream.CheckCompletionBeforeNextReceive(ProtocolToken message, AsyncProtocolRequest asyncRequest) at System.Net.Security.SslStream.StartSendBlob(Byte[] incoming, Int32 count, AsyncProtocolRequest asyncRequest) at System.Net.Security.SslStream.ProcessReceivedBlob(Byte[] buffer, Int32 count, AsyncProtocolRequest asyncRequest) at System.Net.Security.SslStream.StartReadFrame(Byte[] buffer, Int32 readBytes, AsyncProtocolRequest asyncRequest) at System.Net.Security.SslStream.PartialFrameCallback(AsyncProtocolRequest asyncRequest) --- End of stack trace from previous location where exception was thrown --- at System.Net.Security.SslStream.ThrowIfExceptional() at System.Net.Security.SslStream.InternalEndProcessAuthentication(LazyAsyncResult lazyResult) at System.Net.Security.SslStream.EndProcessAuthentication(IAsyncResult result) at System.Net.Security.SslStream.EndAuthenticateAsClient(IAsyncResult asyncResult) at System.Net.Security.SslStream.<>c.<AuthenticateAsClientAsync>b__65_1(IAsyncResult iar) at System.Threading.Tasks.TaskFactory`1.FromAsyncCoreLogic(IAsyncResult iar, Func`2 endFunction, Action`1 endAction, Task`1 promise, Boolean requiresSynchronization) --- End of stack trace from previous location where exception was thrown --- at System.Net.Http.ConnectHelper.EstablishSslConnectionAsyncCore(Stream stream, SslClientAuthenticationOptions sslOptions, CancellationToken cancellationToken) --- End of inner exception stack trace --- at System.Net.Http.ConnectHelper.EstablishSslConnectionAsyncCore(Stream stream, SslClientAuthenticationOptions sslOptions, CancellationToken cancellationToken) at System.Net.Http.HttpConnectionPool.ConnectAsync(HttpRequestMessage request, Boolean allowHttp2, CancellationToken cancellationToken) at System.Net.Http.HttpConnectionPool.CreateHttp11ConnectionAsync(HttpRequestMessage request, CancellationToken cancellationToken) at System.Net.Http.HttpConnectionPool.GetHttpConnectionAsync(HttpRequestMessage request, CancellationToken cancellationToken) at System.Net.Http.HttpConnectionPool.SendWithRetryAsync(HttpRequestMessage request, Boolean doRequestAuth, CancellationToken cancellationToken) at System.Net.Http.RedirectHandler.SendAsync(HttpRequestMessage request, CancellationToken cancellationToken) at System.Net.Http.DiagnosticsHandler.SendAsync(HttpRequestMessage request, CancellationToken cancellationToken) at Microsoft.Extensions.Http.Logging.LoggingHttpMessageHandler.SendAsync(HttpRequestMessage request, CancellationToken cancellationToken) at Microsoft.Extensions.Http.Logging.LoggingScopeHttpMessageHandler.SendAsync(HttpRequestMessage request, CancellationToken cancellationToken) at System.Net.Http.HttpClient.FinishSendAsyncBuffered(Task`1 sendTask, HttpRequestMessage request, CancellationTokenSource cts, Boolean disposeCts) at RankingApp.Data.Services.RankingService.GetGameResultsAsync() in C:\Users\tkdri\source\repos\RankingApp\RankingApp\Data\Services\RankingService.cs:line 52 at RankingApp.Pages.Ranking.OnInitializedAsync() in C:\Users\tkdri\source\repos\RankingApp\RankingApp\Pages\Ranking.razor:line 95 at Microsoft.AspNetCore.Components.ComponentBase.RunInitAndSetParametersAsync() at Microsoft.AspNetCore.Components.RenderTree.Renderer.GetErrorHandledTask(Task taskToHandle) at Microsoft.AspNetCore.Components.Rendering.HtmlRenderer.HandleException(Exception exception) at Microsoft.AspNetCore.Components.RenderTree.Renderer.GetErrorHandledTask(Task taskToHandle) at Microsoft.AspNetCore.Components.RenderTree.Renderer.ProcessAsynchronousWork() at Microsoft.AspNetCore.Components.RenderTree.Renderer.RenderRootComponentAsync(Int32 componentId, ParameterView initialParameters) at Microsoft.AspNetCore.Components.Rendering.HtmlRenderer.CreateInitialRenderAsync(Type componentType, ParameterView initialParameters) at Microsoft.AspNetCore.Components.Rendering.HtmlRenderer.RenderComponentAsync(Type componentType, ParameterView initialParameters) at Microsoft.AspNetCore.Components.Rendering.RendererSynchronizationContext.<>c__11`1.<<InvokeAsync>b__11_0>d.MoveNext() --- End of stack trace from previous location where exception was thrown --- at Microsoft.AspNetCore.Mvc.ViewFeatures.StaticComponentRenderer.PrerenderComponentAsync(ParameterView parameters, HttpContext httpContext, Type componentType) at Microsoft.AspNetCore.Mvc.ViewFeatures.ComponentRenderer.PrerenderedServerComponentAsync(HttpContext context, ServerComponentInvocationSequence invocationId, Type type, ParameterView parametersCollection) at Microsoft.AspNetCore.Mvc.ViewFeatures.ComponentRenderer.RenderComponentAsync(ViewContext viewContext, Type componentType, RenderMode renderMode, Object parameters) at Microsoft.AspNetCore.Mvc.TagHelpers.ComponentTagHelper.ProcessAsync(TagHelperContext context, TagHelperOutput output) at Microsoft.AspNetCore.Razor.Runtime.TagHelpers.TagHelperRunner.<RunAsync>g__Awaited|0_0(Task task, TagHelperExecutionContext executionContext, Int32 i, Int32 count) at RankingApp.Pages.Pages__Host.<ExecuteAsync>b__14_1() in C:\Users\tkdri\source\repos\RankingApp\RankingApp\Pages\_Host.cshtml:line 20 at Microsoft.AspNetCore.Razor.Runtime.TagHelpers.TagHelperExecutionContext.SetOutputContentAsync() at RankingApp.Pages.Pages__Host.ExecuteAsync() in C:\Users\tkdri\source\repos\RankingApp\RankingApp\Pages\_Host.cshtml:line 5 at Microsoft.AspNetCore.Mvc.Razor.RazorView.RenderPageCoreAsync(IRazorPage page, ViewContext context) at Microsoft.AspNetCore.Mvc.Razor.RazorView.RenderPageAsync(IRazorPage page, ViewContext context, Boolean invokeViewStarts) at Microsoft.AspNetCore.Mvc.Razor.RazorView.RenderAsync(ViewContext context) at Microsoft.AspNetCore.Mvc.ViewFeatures.ViewExecutor.ExecuteAsync(ViewContext viewContext, String contentType, Nullable`1 statusCode) at Microsoft.AspNetCore.Mvc.ViewFeatures.ViewExecutor.ExecuteAsync(ViewContext viewContext, String contentType, Nullable`1 statusCode) at Microsoft.AspNetCore.Mvc.Infrastructure.ResourceInvoker.<InvokeNextResultFilterAsync>g__Awaited|29_0[TFilter,TFilterAsync](ResourceInvoker invoker, Task lastTask, State next, Scope scope, Object state, Boolean isCompleted) at Microsoft.AspNetCore.Mvc.Infrastructure.ResourceInvoker.Rethrow(ResultExecutedContextSealed context) at Microsoft.AspNetCore.Mvc.Infrastructure.ResourceInvoker.ResultNext[TFilter,TFilterAsync](State& next, Scope& scope, Object& state, Boolean& isCompleted) at Microsoft.AspNetCore.Mvc.Infrastructure.ResourceInvoker.<InvokeResultFilters>g__Awaited|27_0(ResourceInvoker invoker, Task lastTask, State next, Scope scope, Object state, Boolean isCompleted) at Microsoft.AspNetCore.Mvc.Infrastructure.ResourceInvoker.<InvokeNextResourceFilter>g__Awaited|24_0(ResourceInvoker invoker, Task lastTask, State next, Scope scope, Object state, Boolean isCompleted) at Microsoft.AspNetCore.Mvc.Infrastructure.ResourceInvoker.Rethrow(ResourceExecutedContextSealed context) at Microsoft.AspNetCore.Mvc.Infrastructure.ResourceInvoker.Next(State& next, Scope& scope, Object& state, Boolean& isCompleted) at Microsoft.AspNetCore.Mvc.Infrastructure.ResourceInvoker.<InvokeFilterPipelineAsync>g__Awaited|19_0(ResourceInvoker invoker, Task lastTask, State next, Scope scope, Object state, Boolean isCompleted) at Microsoft.AspNetCore.Mvc.Infrastructure.ResourceInvoker.<InvokeAsync>g__Awaited|17_0(ResourceInvoker invoker, Task task, IDisposable scope) at Microsoft.AspNetCore.Routing.EndpointMiddleware.<Invoke>g__AwaitRequestTask|6_0(Endpoint endpoint, Task requestTask, ILogger logger) at Microsoft.AspNetCore.Authorization.AuthorizationMiddleware.Invoke(HttpContext context) at Microsoft.AspNetCore.Authentication.AuthenticationMiddleware.Invoke(HttpContext context) at Microsoft.AspNetCore.Diagnostics.EntityFrameworkCore.MigrationsEndPointMiddleware.Invoke(HttpContext context) at Microsoft.AspNetCore.Diagnostics.EntityFrameworkCore.DatabaseErrorPageMiddleware.Invoke(HttpContext httpContext) at Microsoft.AspNetCore.Diagnostics.EntityFrameworkCore.DatabaseErrorPageMiddleware.Invoke(HttpContext httpContext) at Microsoft.AspNetCore.Diagnostics.DeveloperExceptionPageMiddleware.Invoke(HttpContext context)
- 미해결[C#과 유니티로 만드는 MMORPG 게임 개발 시리즈] Part6: 웹 서버
예외가 발생했습니다
최종적으로 디버그 모드에서 실행 ( ISS Express ) 하면 위와 같은 결과가 나옵니다 참고로 EntityFramework 4가지 모두 최신버전입니다
- 미해결[C#과 유니티로 만드는 MMORPG 게임 개발 시리즈] Part6: 웹 서버
@code 와 C# 코드의 관계
C# 코드랑 razor component의 코드부분인 @code { ... } 부분은 서로 어떤식으로 연결되어 있는건가요? @inject CounterState 를 하면 C#코드로 만들어진 CounterState가 인스턴스화되고 @code {...} 부분이랑 합쳐지는건가요? 어떻게 서로 유기적으로 작동하는건지 의문이네요. C# 코드랑 @code{...] 부분에 같은 이름의 변수를 생성해도 문제 없이 작동하길래 의문이 생겨서 여쭤봅니다
- 해결됨[C#과 유니티로 만드는 MMORPG 게임 개발 시리즈] Part6: 웹 서버
Web API 로컬PC 호스팅에 대하여
강의랑 관련이 있을까 모르겠습니다만.. 저는 주로 로컬 네트워크 상에서 소규모로 관리되는 CMS에 대한 수요가 많은데요. 이번에도 관련 이슈가 있어서 급하게 블레이저 등을 이용해 보고자 이번 파트만 수강신청했습니다만.. 만드는거 까지는 어떻게 만들어서 IIS로 블레이저를 띄우는데 성공했는데 웹Api 쪽은 이러저러한 오류들로 잘 안되네요. 로컬로 배포하게 되면 로컬에 SQL 서버를 깔아서 관련 테이블들을 수동으로 다 세팅해줘야 하는건가요? 또 웹API 쪽에서 SQL 서버 계정 설정하는 부분은 어디를 살펴봐야 할까요? 이후 강의 에 관련해서 설명해주시는 부분이 있을까요?
- 해결됨[C#과 유니티로 만드는 MMORPG 게임 개발 시리즈] Part6: 웹 서버
Unity와 WebApi 연동 관련하여 간단한 확인 부탁드립니다.
아래 "Unity와 WebApi 연동" 질문글에 대하여 테스트 가능한 상태로 해결은 하였습니다. 아마도 네트워크 인증 문제인 것 같습니다. https://answers.unity.com/questions/1482409/how-to-accept-self-signed-certificate.html 위 링크에서 솔루션 중 "AcceptAllCertificatesSignedWithASpecificKeyPublicKey" 클래스의 "ValidateCertificate" 매서드의 리턴값을 true로 바꾸어서 정상적으로 작동 가능함을 확인했습니다. (수정한 코드; 사실 매서드 자체를 단순히 return true로 만든것과 동일한 상태입니다.) protected override bool ValidateCertificate(byte[] certificateData) { X509Certificate2 certificate = new X509Certificate2(certificateData); string pk = certificate.GetPublicKeyString(); if (pk.ToLower().Equals(PUB_KEY.ToLower())) return true; return true; } 네트워크 관련하여 지식이 많이 부족해서 코드 이해가 어렵네요. 혹시 강사님 괜찮으시다면 위 링크 코드가 어떤 내용인지 간단한 설명 부탁드립니다. (코드는 강사님 코드와 동일하여 따로 전달드리지는 않았습니다.)
- 해결됨[C#과 유니티로 만드는 MMORPG 게임 개발 시리즈] Part6: 웹 서버
Unity와 WebApi 연동
항상 좋은 강의 감사드립니다. 강의를 따라가며 Unity와 WebApi 연동 부분 작성 중인데, WebApi 서버와 연결이 되지 않는 문제가 발생하였습니다. 앞서 설명해주신 Postman을 통해서도 정상적으로 접근이 가능한데, Unity에서 Unknown error 가 발생됩니다. 원인으로는 uwr.isNetworkError 값이 true라고 나타나는데 뚜렷한 해결책이 없어서 막혀있는 상태입니다. (검색으로 찾아본 UnityWebRequest 클래스의 static 함수를 사용한 UnityWebRequest.Get(url)을 이용해도 동일한 현상입니다) 도저히 디버깅이 불가능하여 질문 드립니다. 혹시 유사한 문제에 대해 접근 가능한 해결책이 있을까요?
- 미해결[C#과 유니티로 만드는 MMORPG 게임 개발 시리즈] Part6: 웹 서버
함수 바인딩시 매개변수 전달 방법에 대한 질문
안녕하세요 강의에서 19:00 부터onclick 이벤트?에 유저 삭제하는 함수를 바인딩 해주는 부분에서 간단하게 람다를 이용해서 간접적으로 () 라는 익명함수가함수를 호출해주는 방식으로 해주셨는데혹시 이 방법외에 다른 방법들도 어떤것들이 있는지 써주실수 있을까요??
- 미해결[C#과 유니티로 만드는 MMORPG 게임 개발 시리즈] Part6: 웹 서버
루키스님 질문이 있습니다!
수업을 들으며 예제를 하나씩 돌려보며릴리즈모드로 빌드해서 HelloBlazorServer 서버를 켜놓고localhost URL을 접속하면 페이지가 뜨는것을 확인했습니다.뭔가 사소한 계산기 UI버튼이 있는 페이지를 열어서 서버를 실행시키고접속해서 계산기기능을 하는것을 연습해볼겸해보려고하는데 만약 release 로 빌드된 프로젝트파일을 통째로비주얼스튜디오나 닷넷관련된 패키지? 같은 구성요소들이설치되어있지 않은경우 실행하기위해 최소 필요한 파일은어디서 받아야하나요??? 예를들어) 윈도우에서 해당 릴리즈 서버를 실행시키기위해 A라는 PC에서 서버를 릴리즈로 빌드한프로젝트 폴더를 통째로B라는 윈도우가 설치된 PC에서 해당 폴더를 열어서실행시키기위해 필요한 최소 파일들은 어디서 받을수 있고어떤게 필요한가요? 즉) 배포시 이것을 다른 Windows 10 PC에서실행시켜서 동작하는것을 확인하기위해배포?에 필요한 것들이 뭐가 필요하고 비주얼 스튜디오없이어디서 받으면 되는지 빠른방법? 을 알고싶어요이것저것 만들면서 연습을 해보고싶어요!
- 미해결[C#과 유니티로 만드는 MMORPG 게임 개발 시리즈] Part6: 웹 서버
오디오/영상 싱크가 맞지 않는것 같습니다.
오디오/영상 싱크가 맞지 않는것 같습니다.
- 해결됨[C#과 유니티로 만드는 MMORPG 게임 개발 시리즈] Part6: 웹 서버
Id에 관해.
유저를 삭제하고 다시만들면 ID가 1부터 시작되는게 아니라 삭제된 부분부터 8,9,10 이런식으로 시작되는데... (수정이 안되는 것 같은데....) 일반적인 경우라면 이렇게 삭제할 경우는 흔하진 않을 것 같긴한데... 만약에라도 유저를 삭제하고 다시 만든다고 하는 경우엔 쭉 그 아이디가 사용되는건가요? 아예 밀어버릴 수는 없을까해서요. 구분하는거라 크게 신경쓸 필요가없는것 같기도한데. 이부분은 수정이 안되는 이유가 있을까요?
- 미해결[C#과 유니티로 만드는 MMORPG 게임 개발 시리즈] Part6: 웹 서버
Service 추가 방법
2회차 보고 있는중에,, ConfigureServices에 RankingService외에 다른 서비스를 추가하려면 어떻게 해야할까요? 서비스 명만 다르게 아래와 같이 동일하게 추가하면 page 접근시 연결이 자동 종료 되버립니다. services.AddHttpClient<RankingService>(c => { c.BaseAddress = new Uri("https://localhost:44351"); }); services.AddHttpClient<InventoryService>(c => { c.BaseAddress = new Uri("https://localhost:44351"); });
- 해결됨[C#과 유니티로 만드는 MMORPG 게임 개발 시리즈] Part6: 웹 서버
Db model 에 index 추가 및 Identity관련
강의 감사히 잘보구 있습니다! 시청 중에 궁금한게 있어 문의드려요~ 1. GameResult model에서 기본키 외에 UserName등의 컬럼에 (DB강좌에서 배운) index key를 추가하려면 model에 어떤 방식으로 추가해야 하는지요? 2. 강의에서 언급하신대로 RankingApp을 단계별로 따라가던중, Identity 추가에 의해 자동으로 생긴 _LoginPartial.cshtml이 있는데 이 페이지의 /Account/로그인/로그아웃 관련 페이지들의 css, html 문구 등 요소는 어디서 수정할 수 있을까요? 3. 게임서버의 유저관리를 위해 직접 생성한 model 아닌 AspNetCore.Identity를 사용한다면 기본적인 로그인 유저 암호변경 또는 UserName, Email등의 Identity정보를 변경해야할것 같은데 이런부분은 blazor에서 어떤식으로 접근해야 할까요?
- 미해결[C#과 유니티로 만드는 MMORPG 게임 개발 시리즈] Part6: 웹 서버
asp.net 질문 드립니다.
안녕하세요. 매번 강의 도움이 많이 되고있습니다. 질문이 몇가지 있는데 잘 모르다 보니 용어를 맞게 질문하는지도 잘모르겠습니다. 1. 제가 놓친부분이 있는지 모르겠는데 강의중에는 주로 웹페이지가 바로 켜지고 확인 하는 방식이였는데 이걸 서버를 켜놓고 별도로 브라우저에서 접근을 하려고 하는데 실행할때 IIS Express 로 선택하고 실행시키면 별도의 브라우저에서 그 주소를 치면 접속은 잘 됩니다.(여기서도 궁금한게 설정에서 브라우저 시작 체크를 껐는데 요렇게 실행시키면 무조건 브라우저가 뜨네요) 그런데 하고 싶은건 그냥 실행파일 형태 (혹은 dll?)의 형태로 실행시키고(IIS가 아닌 자체호스팅) 브라우저에서 접속하려고 하면 안되네요 mvc 프레임웍으로 생성시켜서 접속하면 잘 되는데 blazer 프레임웍으로 만들면 접속이 안되네요. 그리고 mvc가 아닌 blazer에서는 라우팅 규칙이 어떻게 되는지도 잘 모르겠습니다. 2. 검색한 바로는 웹 호스팅이 윈도우에서 IIS로 하던가 아니면 Nginx, Apache 요런걸 쓰는걸로 알고 있는데 asp.net core에서는 Kestrel이라는 자체 호스팅을 지원한다고 봤는데 이게 가벼운 테스트 용인지 아니면 Nginx나 Apache 같은거 없이도 상용이 가능한건지 정보를 얻을수 있을련지요? 그리고 시작버튼 옆에 보면 IIS Express나 프로젝트 이름(이게 Kestrel 서버로 실행되는거라고 추측은 하고 있는데) 있는데 이게 맞는지 많이 헷깔리네요 3. 그리고 webapi #1이였나 가물가물 한데 목소리랑 화면 싱크가 안맞는거 같습니다. 저는 이미 수강을 맞쳐서 상관은 없습니다. ㅋ 여튼 오늘도 수고하십시요.