채널톡 아이콘

인프런 커뮤니티 질문&답변

이 동호님의 프로필 이미지

작성한 질문수 5

[C#과 유니티로 만드는 MMORPG 게임 개발 시리즈] Part6: 웹 서버

Blazor와 WebApi 연동

Uri함수 파라미터 주소에 sslport번호를 넣으면 무한 로딩이걸림

작성

·

318

·

수정됨

0

여기 sslPort 번호를 가져와서

Uri함수 파라미터에 주소를 입력했더니

이렇게 무한 로딩이 걸려서 해결하고 싶어서 중단점 걸어보고 실행해봤습니다.

여기서

여기로 들어가면 var resultContent = await result.Content.ReadAsStringAsync(); 이 부분 전에 있는 중단점에는 잘 걸리는데 이 중단점에는 안 걸리고 함수 안에 있는 코드들이 전부 실행 되지 않고

결국 _gameResults 는 정상적으로 함수가 실행 되지 않아서 값을 못 받아서 계속 null인 상태로 있어서 무한 로딩이 걸렸습니다. 그래서 처음에는 비동기 함수가 실행을 완전히 끝내기 전에 그 전에 있던 함수가 종료 되었나? 생각하면서 이것저것 만지다가 그런 문제는 아닌 것 같고 그냥 무지성으로 Uri 파라미터에 sslPort번호 말고

여기에

 

"applicationUrl": "https://localhost:7146

이 부분을 Uri파라미터 주소에 넣었더니 잘 실행됩니다 그런데 강사님은 sslPort번호를 넣어서 잘 작동시켰는데 왜 저는 sslPort를 넣었는데 이상하게 작동되는지 궁금합니다.

 

답변 1

0

인프런 AI 인턴님의 프로필 이미지

안녕하세요, 인프런 AI 인턴입니다.

이 동호님, 질문 주셔서 감사합니다.

먼저, Uri 함수의 파라미터로 SSL port 번호를 넣었을 때 무한 로딩이 걸리는 현상은 여러 요인에 의해 발생할 수 있습니다. 이 중 하나는 SSL 관련 설정이 제대로 되지 않아서 서버가 해당 포트에서 SSL 연결을 수립하지 못하는 경우일 수 있습니다.

Spring Boot를 사용하는 웹 서버의 경우 SSL 설정은 application.propertiesapplication.yaml 파일에서 server.ssl.* 프로퍼티들을 통해 설정됩니다. 예를 들어 다음과 같이 설정 할 수 있습니다:

Properties 파일 예:

server.port=8443
server.ssl.key-store=classpath:keystore.jks
server.ssl.key-store-password=secret
server.ssl.key-password=another-secret

Yaml 파일 예:

server:
  port: 8443
  ssl:
    key-store: "classpath:keystore.jks"
    key-store-password: "secret"
    key-password: "another-secret"

만약 Spring Boot 서버의 SSL 설정이 정확히 되어 있지 않거나, keystore 파일에 문제가 있거나, application.properties에서 설정된 포트와 실제 코드 내에서 사용하는 포트가 일치하지 않으면, SSL 포트로의 접근 시 문제가 발생할 수 있습니다. 위의 설정 예시는 Spring Boot 프로젝트에 적용되는 것이며, 만약 C#과 유니티 프로젝트에서 비슷한 문제가 발생한다면 해당 프레임워크 또는 서버 설정을 검토할 필요가 있습니다.

C#에서 Kestrel 서버를 사용하는 경우에는 launchSettings.json 파일에서 applicationURL을 통해 개발 시 사용하는 HTTP 및 HTTPS 포트를 설정할 수 있습니다. 이 파일에서는 SSL 포트를 별도로 지정할 수도 있습니다. 아래는 launchSettings.json 파일의 예시입니다:

{
  "iisSettings": {
    "windowsAuthentication": false,
    "anonymousAuthentication": true,
    "iisExpress": {
      "applicationUrl": "http://localhost:55439",
      "sslPort": 44331
    }
  },
  "profiles": {
    "WebApi": {
      "commandName": "Project",
      "dotnetRunMessages": true,
      "launchBrowser": true,
      "launchUrl": "swagger",
      "applicationUrls": "https://localhost:7146;http://localhost:5100",
      "environmentVariables": {
        "ASPNETCORE_ENVIRONMENT": "Development"
      }
    },
    "IIS Express": {
      "commandName": "IISExpress",
      "launchBrowser": true,
      "launchUrl": "swagger",
      "environmentVariables": {
        "ASPNETCORE_ENVIRONMENT": "Development"
      }
    }
  }
}

여기서 sslPort가 웹 응용 프로그램이 SSL을 사용하여 HTTPS 통신을 위해 수신 대기할 포트임을 명시합니다.

SSL 포트로 애플리케이션을 실행할 때는 해당 포트의 SSL 설정이 정확하게 구성되어 있는지, 또 SSL 인증서가 올바로 설치되어 있는지 확인해야 합니다. 개발 환경에서는 자체 서명된 인증서(self-signed certificate)를 생성하여 사용하기도 합니다.

강사님이 SSL 포트로 잘 실행하셨다면, 우선 강사님과 여러분의 SSL 설정과 인증서가 동일한지 확인하시길 바랍니다. 그리고 해당 포트에서 서버가 SSL 인증 절차를 처리할 수 있는지 확인해보시는 것이 좋겠습니다. SSL 설정이 복잡하거나 다루기 어려운 경우 일시적으로 HTTP 포트만을 사용하여 기본 동작을 확인한 다음, SSL 문제를 디버깅하는 접근 방식을 고려해볼 수도 있습니다.

정보를 더 자세히 알려주시면 더 정확한 해결책을 제공하는데 도움이 될 것입니다.

감사합니다.