2017-03-16 13 views
10

사용자 인증을 사용하여 간단한 ASP.Net Core 응용 프로그램을 만들었습니다 (모든 Entity Framework가 웹 응용 프로그램 템플릿에 미리로드되어 있음). 내 appsettings.json 파일에있는 connectionString 파일을 사용하여 "data source = {computerName}\\{serverName}" 설정으로 데이터베이스에 연결하고 있습니다.ASP.NET Core - 게시 후 데이터베이스에 연결하지 않는 응용 프로그램

데이터베이스 인스턴스와 Visual Studio는 동일한 컴퓨터에 있습니다. 이것은 개발 및 디버깅 모드에서 웹 API에 데이터를 반환 할 때 잘 동작합니다. 게시 할 때 도메인 이름에서 사이트로 이동하려고하면 데이터베이스 연결이 필요하지 않은 웹 페이지를 볼 수 있지만 데이터베이스의 데이터는 다음과 같은 페이지를 반환합니다.

오류 .
요청을 처리하는 동안 오류가 발생했습니다. 개발 모드 개발 환경으로 스와핑하면 발생한 오류에 대한 자세한 정보가 표시됩니다.

최종 사용자에게 의 중요한 정보가 표시 될 수 있으므로 배포 된 응용 프로그램에서는 개발 환경을 사용해서는 안됩니다. 로컬 디버깅의 경우 ASPNETCORE_ENVIRONMENT 환경 변수를 Development로 설정하고 응용 프로그램을 다시 시작하여 개발 환경을 사용할 수 있습니다.

ASPNETCORE_ENVIRONMENT의 환경 변수를 개발에서 생산으로 변경하려고 시도했지만 성공하지 못했습니다.

나는 어떤 파일 appsettings.Production.json이 없다하더라도, 내 project.json 파일에 publishOptions-appsettings.Production.json를 추가하는 시도,이 도움이되지 않았다. dotnet publish

web.config 파일의 evironment 변수가 내가 개발 Visual Studio를 설치 외부에서 내 SQL 서버 데이터베이스에 연결하기 위해 게시 된 웹 API를하는 데 도움이 필요 Deployment

를 작동하지 않았다 추가.

제가 생각할 수있는 마지막 것은 연결 문자열을 이해하는 방법이 올바르지 않을 수 있습니다. 웹 API가 연결 문자열을 사용하여 서버 쪽에서 데이터베이스에 연결하는 경우 동일한 컴퓨터에 있기 때문에 개발 중에 http://localhost:port#으로 전화를 걸 때처럼 잘 작동합니다. 그러나 데이터베이스 문자열이 클라이언트 측 호출을 기반으로해야하는 경우 도메인 이름과 IP 주소가 있어야합니다. 누군가 그게 어떤 것인지 알려 줄 수 있습니까?

유일한 다른 생각은 IIS 관리자 내부에서 수행하지 않고 수행해야 할 작업이 있다는 것입니다. 거기에 연결 문자열도 있지만 연결 문자열은 응용 프로그램 내부에 있기 때문에 그것이 무엇인지 확신 할 수 없습니다. 또한 어쩌면 나는 그들이 동일한 기계에 있더라도 응용 프로그램 데이터베이스 서버와 통신 할 수있는 일종의 권한을 부여한다고 가정합니까 ???

답변

7

마지막으로 "iis에서 웹 API를 배포하는 방법"에 대해 많은 조사를 마친 후 Host ASP.NET Web API in IIS using Visual Studio Publish에서 보안 엔터티 BUILTIN \ IIS_IUSRS를 추가해야한다고 배웠습니다. 그런 다음 내 데이터베이스 테이블에 매핑을 배치하고 데이터베이스에 대한 db_datareader (및 db_datawriter)를 IUSER에 제공하여 내 자체 호스팅 IIS 웹 API에서 액세스를 허용합니다.우리는 ASP.NET 4.0 응용 프로그램 풀은 반드시 IIS AppPool을 \ ASP.NET의 V4을 사용하는 것처럼 IIS AppPool을 \ ASP.NET 4.0 에서 데이터베이스에 액세스

알리는 부분 위에서 언급 한 링크에서이 .0이 데이터베이스 서버 -> 보안 -> 로그인에 추가됩니다.

+0

솔루션을 공유해 주셔서 감사합니다. 그것은 나를 도왔다. 내가해야 할 일은 BUILTIN \ IIS_IUSRS를 Db 로그인에 읽기/쓰기 권한으로 추가하는 것이 었습니다. – nam