Visual Studio를 사용하여 웹 배포 ASP.NET: 문제 해결

작성자: Tom Dykstra

시작 프로젝트 다운로드

이 자습서 시리즈에서는 Visual Studio 2012 또는 Visual Studio 2010을 사용하여 Azure App Service Web Apps 또는 타사 호스팅 공급자에 ASP.NET 웹 애플리케이션을 배포(게시)하는 방법을 보여 줍니다. 시리즈에 대한 자세한 내용은 시리즈의 첫 번째 자습서를 참조하세요.

이 페이지에서는 Visual Studio를 사용하여 ASP.NET 웹 애플리케이션을 배포할 때 발생할 수 있는 몇 가지 일반적인 문제에 대해 설명합니다. 각 원인에 대해 하나 이상의 가능한 원인과 해당 솔루션이 제공됩니다.

표시된 시나리오는 Azure 및 타사 호스팅 공급자 모두에 적용됩니다. Azure App Service에서 웹앱 문제 해결에 대한 자세한 내용은 다음 리소스를 참조하십시오.

'/' 애플리케이션의 서버 오류 - 현재 사용자 지정 오류 설정으로 인해 오류 세부 정보가 원격으로 볼 수 없습니다.

시나리오

원격 호스트에 사이트를 배포한 후 Web.config 파일에서 customErrors 설정을 언급하지만 오류의 실제 원인을 나타내지 않는다는 오류 메시지가 표시됩니다.

Server Error in '/' Application.
Runtime Error 

Description: An application error occurred on the server. The current custom error settings 
for this application prevent the details of the application error from being viewed remotely 
(for security reasons). It could, however, be viewed by browsers running on the local server 
machine. 

Details: To enable the details of this specific error message to be viewable on remote machines,
please create a <customErrors> tag within a "web.config" configuration file located in the
root directory of the current web application. This <customErrors> tag should then have its
"mode" attribute set to "Off".

가능한 원인 및 해결 방법

기본적으로 ASP.NET 웹 애플리케이션이 로컬 컴퓨터에서 실행되는 경우에만 자세한 오류 정보를 표시합니다. 일반적으로 해커가 이 정보를 사용하여 애플리케이션에서 취약성을 찾을 수 있으므로 웹 애플리케이션을 인터넷을 통해 공개적으로 사용할 수 있는 경우 자세한 오류 정보를 표시하지 않습니다. 그러나 사이트에 사이트 또는 업데이트를 배포할 때 문제가 발생하여 실제 오류 메시지를 받아야 하는 경우가 있습니다.

애플리케이션이 원격 호스트에서 실행될 때 자세한 오류 메시지를 표시할 수 있도록 하려면 Web.config 파일을 편집하여 customErrors 모드를 해제하고, 애플리케이션을 다시 배포하고, 애플리케이션을 다시 실행합니다.

  1. 애플리케이션 Web.config 파일에 system.web 요소에 customErrors 요소가 있는 경우 모드 특성을 "off"로 변경합니다. 그렇지 않으면 다음 예제와 같이 mode 특성이 "off"로 설정된 system.web 요소에 customErrors 요소를 추가합니다.

    <configuration>
      <system.web>
        <customErrors mode="off"/>
      </system.web>
    </configuration>
    
  2. 애플리케이션을 배포합니다.

  3. 애플리케이션을 실행하고 오류가 발생한 이전에 수행한 작업을 반복합니다. 이제 실제 오류 메시지가 무엇인지 확인할 수 있습니다.

  4. 오류를 해결한 경우 원래 customErrors 설정을 복원하고 애플리케이션을 다시 배포합니다.

해당 파일이 이미 있는 경우 'ContosoUniversity'를 만들거나 섀도 복사본을 만들 수 없습니다.

시나리오

Visual Studio에서 프로젝트를 실행하려고 하면 다음 예제와 같은 메시지가 포함된 오류 페이지가 표시됩니다.

'/' 애플리케이션의 서버 오류. 해당 파일이 이미 있는 경우 'ContosoUniversity'를 만들거나 섀도 복사본을 만들 수 없습니다.

가능한 원인 및 해결 방법

잠시 기다렸다가 브라우저를 새로 고치거나 사이트를 다시 컴파일하고 다시 실행해 보세요.

SQL Server Compact 사용하는 웹 페이지에서 액세스가 거부됨

시나리오

SQL Server Compact 사용하는 사이트를 배포하고 데이터베이스에 액세스하는 배포된 사이트에서 페이지를 실행하는 경우 다음 오류 메시지가 표시됩니다.

액세스가 거부되었습니다. (HRESULT: 0x80070005에서 예외 발생(E_ACCESSDENIED))

가능한 원인 및 해결 방법

서버의 NETWORK SERVICE 계정은 bin\amd64 또는 bin\x86 폴더에 있는 SQL Service Compact 네이티브 이진 파일을 읽을 수 있어야 하지만 해당 폴더에 대한 읽기 권한이 없습니다. bin 폴더에서 NETWORK SERVICE에 대한 읽기 권한을 설정하여 권한을 하위 폴더로 확장해야 합니다.

권한이 부족하여 구성 파일을 읽을 수 없음

시나리오

Visual Studio 게시 단추를 클릭하여 로컬 컴퓨터의 IIS에 애플리케이션을 배포하면 게시가 실패하고 출력 창에 다음과 유사한 오류 메시지가 표시됩니다.

IIS 구성 파일 'MACHINE/REDIRECTION'을 읽을 때 오류가 발생했습니다. 이 작업을 수행하는 ID는 ... 오류: 권한이 부족하여 구성 파일을 읽을 수 없습니다.

가능한 원인 및 해결 방법

로컬 컴퓨터에서 IIS에 한 번 클릭 게시를 사용하려면 관리자 권한으로 Visual Studio를 실행해야 합니다. Visual Studio를 닫고 관리자 권한으로 다시 시작합니다.

대상 컴퓨터에 연결할 수 없습니다... 지정된 프로세스 사용

시나리오

Visual Studio 게시 단추를 클릭하여 애플리케이션을 배포하면 게시가 실패하고 출력 창에 다음과 유사한 오류 메시지가 표시됩니다.

Web deployment task failed.(Could not connect to the destination computer ("<server URL>") using the specified process
("The Web Management Service"). This can happen if a proxy server is interrupting communication with the destination server. 
Disable the proxy server and try again.) ... The remote server returned an error: (502) Bad Gateway.

가능한 원인 및 해결 방법

프록시 서버가 대상 서버와의 통신을 중단합니다. Windows 제어판 또는 인터넷 Explorer 인터넷 옵션을 선택하고 연결 탭을 선택합니다. 인터넷 속성 대화 상자에서 LAN 설정을 클릭합니다. LAN(로컬 영역 네트워크) 설정 대화 상자에서 자동으로 설정 검색 확인란의 선택을 취소합니다. 그런 다음 게시 단추를 다시 클릭합니다.

문제가 지속되면 시스템 관리자에게 문의하여 프록시 또는 방화벽 설정으로 수행할 수 있는 작업을 확인합니다. 웹 배포는 웹 관리 서비스 배포(8172)에 비표준 포트를 사용하기 때문에 문제가 발생합니다. 다른 연결의 경우 웹 배포는 포트 80을 사용합니다. 타사 호스팅 공급자에 배포하는 경우 일반적으로 웹 관리 서비스를 사용합니다.

기본 .NET 4.0 애플리케이션 풀이 없습니다.

시나리오

.NET Framework 4가 필요한 애플리케이션을 배포하면 다음 오류 메시지가 표시됩니다.

기본 .NET 4.0 애플리케이션 풀이 없거나 애플리케이션을 추가할 수 없습니다. 이 컴퓨터에 ASP.NET 4.0이 설치되어 있는지 확인하세요.

가능한 원인 및 해결 방법

ASP.NET 4는 IIS에 설치되어 있지 않습니다. 배포하는 서버가 개발 컴퓨터이고 Visual Studio 2010이 설치되어 있는 경우 ASP.NET 4는 컴퓨터에 설치되지만 IIS에 설치되지 않을 수 있습니다. 배포하는 서버에서 관리자 권한 명령 프롬프트를 열고 다음 명령을 실행하여 IIS에서 ASP.NET 4를 설치합니다.

cd %windir%\Microsoft.NET\Framework\v4.0.30319
aspnet_regiis.exe –iru

기본 애플리케이션 풀의 .NET Framework 버전을 수동으로 설정해야 할 수도 있습니다. 자세한 내용은 이 시리즈의 IIS에 테스트 환경으로 배포 자습서를 참조하세요.

초기화 문자열의 형식이 인덱스 0부터 사양을 준수하지 않습니다.

시나리오

원클릭 게시를 사용하여 애플리케이션을 배포한 후 데이터베이스에 액세스하는 페이지를 실행하면 다음 오류 메시지가 표시됩니다.

초기화 문자열의 형식이 인덱스 0부터 사양을 준수하지 않습니다.

가능한 원인 및 해결 방법

배포된 사이트에서 Web.config 파일을 열고 검사 다음 예제와 같이 연결 문자열 값이 로 $(ReplaceableToken_시작하는지 확인합니다.

<connectionStrings>
  <add name="DefaultConnection" connectionString="$(ReplaceableToken_DefaultConnection-Web.config Connection String_0)" providerName="System.Data.SqlServerCe.4.0" />
  <add name="SchoolContext" connectionString="$(ReplaceableToken_SchoolContext-Web.config Connection String_0)" providerName="System.Data.SqlServerCe.4.0" />
</connectionStrings>

연결 문자열이 이 예제와 같이 표시되면 프로젝트 파일을 편집하고 모든 빌드 구성에 대한 PropertyGroup 요소에 다음 속성을 추가합니다.

<AutoParameterizationWebConfigConnectionStrings>False</AutoParameterizationWebConfigConnectionStrings>

그런 다음, 애플리케이션을 다시 배포합니다.

HTTP 500 내부 서버 오류

시나리오

배포된 사이트를 실행하면 오류의 원인을 나타내는 특정 정보 없이 다음 오류 메시지가 표시됩니다.

HTTP 오류 500 - 내부 서버 오류입니다.

가능한 원인 및 해결 방법

500 오류의 원인은 여러 가지가 있지만 이러한 자습서를 따르는 경우 가능한 한 가지 원인은 xml 요소를 Web.config 변환 파일 중 하나에 잘못된 위치에 배치하기 위한 것입니다. 예를 들어 구성에서 직접 <>삽입하는 대신 system.web> 아래에 <위치> 요소를 삽입하는 변환을 <배치하면 이 오류가 발생합니다. Web.config 변환 미리 보기 기능을 사용하여 변환이 의도한 대로 작동하는지 확인할 수 있습니다. 잘못 코딩된 변환을 찾을 경우 해결 방법은 변환 파일을 수정하고 다시 배포하는 것입니다. 오류가 명확하지 않은 경우 변환을 주석 처리하고 다시 배포하여 500 오류를 일으키는 원인을 확인합니다.

HTTP 500.21 내부 서버 오류

시나리오

배포된 사이트를 실행하면 다음 오류 메시지가 표시됩니다.

HTTP 오류 500.21 - 내부 서버 오류입니다. 처리기 "PageHandlerFactory-Integrated"의 모듈 목록에 잘못된 모듈 "ManagedPipelineHandler"가 있습니다.

가능한 원인 및 해결 방법

배포한 사이트는 ASP.NET 4이지만 ASP.NET 4는 서버의 IIS에 등록되지 않습니다. 서버에서 관리자 권한 명령 프롬프트를 열고 다음 명령을 실행하여 ASP.NET 4를 등록합니다.

cd %windir%\Microsoft.NET\Framework\v4.0.30319
aspnet_regiis.exe –iru

기본 애플리케이션 풀의 .NET Framework 버전을 수동으로 설정해야 할 수도 있습니다. 자세한 내용은 이 시리즈의 IIS에 테스트 환경으로 배포 자습서를 참조하세요.

App_Data SQL Server Express 데이터베이스를 열지 못했습니다.

시나리오

Web.config 파일 연결 문자열을 업데이트하여 SQL Server Express 데이터베이스를 App_Data 폴더의 .mdf 파일로 가리키고 애플리케이션을 처음 실행할 때 다음 오류 메시지가 표시됩니다.

System.Data.SqlClient.SqlException: 로그인에서 요청한 데이터베이스 "DatabaseName"을 열 수 없습니다. 로그인에 실패했습니다.

가능한 원인 및 해결 방법

.mdf 파일의 이름은 이전에 기존 데이터베이스의 .mdf 파일을 삭제한 경우에도 컴퓨터에 존재했던 SQL Server Express 데이터베이스의 이름과 일치할 수 없습니다. .mdf 파일의 이름을 데이터베이스 이름으로 사용한 적이 없는 이름으로 변경하고 새 이름을 사용하도록 Web.config 파일을 변경합니다. 또는 SQL Server Management Studio Express를 사용하여 기존 SQL Server Express 데이터베이스를 삭제할 수 있습니다.

모델 호환성을 확인할 수 없음

시나리오

새 SQL Server Express 데이터베이스를 가리키도록Web.config파일 연결 문자열을 업데이트했으며 애플리케이션을 처음 실행할 때 다음 오류 메시지가 표시됩니다.

데이터베이스에 모델 메타데이터가 없기 때문에 모델 호환성을 확인할 수 없습니다. IncludeMetadataConvention이 DbModelBuilder 규칙에 추가되었는지 확인합니다.

가능한 원인 및 해결 방법

Web.config 파일에 입력한 데이터베이스 이름이 컴퓨터에서 이전에 사용된 적이 있는 경우 데이터베이스에 일부 테이블이 이미 있을 수 있습니다. 이전에 컴퓨터에서 사용되지 않은 새 이름을 선택하고 이 새 데이터베이스 이름을 사용하도록 가리키도록Web.config 파일을 변경합니다. 또는 SQL Server Express 유틸리티 또는 SQL Server Management Studio Express를 사용하여 기존 데이터베이스를 삭제할 수 있습니다.

스크립트가 사용자 또는 역할을 만들려고 할 때 SQL 오류

시나리오

패키지/게시 SQL 탭에 구성된 데이터베이스 배포를 사용하고, 배포 중에 실행되는 SQL 스크립트에는 사용자 만들기 또는 역할 만들기 명령이 포함되며, 이러한 명령이 실행되면 스크립트 실행이 실패합니다. 다음과 같은 자세한 메시지가 표시될 수 있습니다.

The approximate location of the error was between lines '1' and '3' of the script. 
The verbose log may have more information about the error. The command started with:
CREATE USER [user2] FOR LOGIN [user2] WITH DEFAULT
Error: User does not have permission to perform this action.

패키지/게시 SQL 탭이 아닌 웹 게시 마법사에서 데이터베이스 배포를 구성한 경우 구성 및 배포 포럼에서 스레드를 만들고 이 문제 해결 페이지에 솔루션이 추가됩니다.

가능한 원인 및 해결 방법

배포를 수행하는 데 사용하는 사용자 계정에는 사용자 또는 역할을 만들 수 있는 권한이 없습니다. 예를 들어 호스팅 회사는 사용자를 위해 설정한 사용자 계정에 db_datareader, db_datawriter 및 db_ddladmin 역할을 할당할 수 있습니다. 이러한 개체는 대부분의 데이터베이스 개체를 만드는 데 충분하지만 사용자 또는 역할을 만드는 데는 충분하지 않습니다. 오류를 방지하는 한 가지 방법은 데이터베이스 배포에서 사용자 및 역할을 제외하는 것입니다. 다음 특성을 포함할 수 있도록 데이터베이스의 자동으로 생성된 스크립트에 대한 PreSource 요소를 편집하여 이 작업을 수행할 수 있습니다.

CopyAllUsers=false, CopyAllRoles=false

프로젝트 파일에서 PreSource 요소를 편집하는 방법에 대한 자세한 내용은 방법: 프로젝트 파일에서 배포 설정 편집을 참조하세요. 개발 데이터베이스의 사용자 또는 역할이 대상 데이터베이스에 있어야 하는 경우 호스팅 공급자에게 문의하여 도움을 요청하세요.

배포하는 동안 사용자 지정 스크립트를 실행할 때 SQL Server 시간 제한 오류

시나리오

배포 중에 실행할 사용자 지정 SQL 스크립트를 지정했으며 웹 배포에서 실행하면 시간이 초과됩니다.

가능한 원인 및 해결 방법

트랜잭션 모드가 다른 여러 스크립트를 실행하면 시간 초과 오류가 발생할 수 있습니다. 기본적으로 자동으로 생성된 스크립트는 트랜잭션에서 실행되지만 사용자 지정 스크립트는 실행되지 않습니다. 패키지/게시 SQL에서 기존 데이터베이스에서 데이터 및/또는 스키마 끌어오기 옵션을 선택하고 사용자 지정 SQL 스크립트를 추가하는 경우 모든 스크립트가 동일한 트랜잭션 설정을 사용하도록 일부 스크립트에서 트랜잭션 설정을 변경해야 합니다. 자세한 내용은 방법: 웹 애플리케이션 프로젝트를 사용하여 데이터베이스 배포를 참조하세요.

모든 항목이 동일하지만 여전히 이 오류가 발생하도록 트랜잭션 설정을 구성한 경우 스크립트를 별도로 실행하는 것이 가능한 해결 방법입니다. 패키지/게시 SQL 탭의 데이터베이스 스크립트 표에서 시간 제한 오류를 일으키는 스크립트에 대한 검사 포함 상자의 선택 취소한 다음 프로젝트를 게시합니다. 그런 다음 데이터베이스 스크립트 표로 돌아가서 해당 스크립트의 검사 포함 상자를 선택하고 다른 스크립트에 대한 검사 포함 상자의 선택을 취소합니다. 그런 다음 프로젝트를 다시 게시합니다. 이번에는 게시할 때 선택한 사용자 지정 스크립트만 실행됩니다.

사이트 매니페스트의 스트림 데이터를 아직 사용할 수 없습니다.

시나리오

t(테스트) 옵션이 있는 deploy.cmd 파일을 사용하여 패키지를 설치하는 경우 다음 오류 메시지가 표시됩니다.

오류: 'sitemanifest/dbFullSql[@path='C:\TEMP\AdventureWorksGrant.sql']/sqlScript'의 스트림 데이터를 아직 사용할 수 없습니다.

가능한 원인 및 해결 방법

오류 메시지는 명령이 테스트 보고서를 생성할 수 없음을 의미합니다. 그러나 y(실제 설치) 옵션을 사용하는 경우 명령이 실행될 수 있습니다. 메시지는 테스트 모드에서 명령을 실행하는 데 문제가 있음을 나타냅니다.

이 애플리케이션에는 ManagedRuntimeVersion v4.0이 필요합니다.

시나리오

배포를 시도하면 다음 오류 메시지가 표시됩니다.

사용하려는 애플리케이션 풀에는 'managedRuntimeVersion' 속성이 'v2.0'으로 설정되어 있습니다. 이 애플리케이션에는 'v4.0'이 필요합니다.

가능한 원인 및 해결 방법

ASP.NET 4는 IIS에 설치되어 있지 않습니다. 배포하는 서버가 개발 컴퓨터이고 Visual Studio 2010이 설치되어 있는 경우 ASP.NET 4는 컴퓨터에 설치되지만 IIS에 설치되지 않을 수 있습니다. 배포하는 서버에서 관리자 권한 명령 프롬프트를 열고 다음 명령을 실행하여 IIS에서 ASP.NET 4를 설치합니다.

cd %windir%\Microsoft.NET\Framework\v4.0.30319
aspnet_regiis.exe –i

Microsoft.Web.Deployment.DeploymentProviderOptions를 캐스팅할 수 없음

시나리오

패키지를 배포할 때 다음 오류 메시지가 표시됩니다.

'Microsoft.Web.Deployment.DeploymentProviderOptions' 형식의 개체를 'Microsoft.Web.Deployment.DeploymentProviderOptions'로 캐스팅할 수 없습니다.

가능한 원인 및 해결 방법

웹 배포 1.1 UI를 사용하여 IIS 관리자에서 웹 배포 2.0이 설치된 서버에 배포하려고 합니다. IIS 원격 관리 도구를 사용하여 패키지를 가져와 배포하는 경우 연결을 설정할 때 사용 가능한 새 기능 대화 상자를 검사. (이 대화 상자는 연결이 처음 설정된 경우에만 한 번만 표시될 수 있습니다. 연결을 지우고 다시 시작하려면 IIS 관리자를 닫고 명령 프롬프트에서 inetmgr /reset을 입력하여 다시 시작합니다.) 나열된 기능 중 하나가 웹 배포 UI이고 버전 번호가 8보다 낮은 경우 배포하려는 서버에 1.1 및 2.0 버전의 웹 배포가 모두 설치되어 있을 수 있습니다. 2.0이 설치된 클라이언트에서 배포하려면 서버에 웹 배포 2.0만 설치되어 있어야 합니다. 이 문제를 resolve 위해 호스팅 공급자에게 문의해야 합니다.

SQL Server Compact 네이티브 구성 요소를 로드할 수 없음

시나리오

배포된 사이트를 실행하면 다음 오류 메시지가 표시됩니다.

버전 8482의 ADO.NET 공급자에 해당하는 SQL Server Compact 네이티브 구성 요소를 로드할 수 없습니다. 올바른 버전의 SQL Server Compact 설치합니다. 자세한 내용은 KB 문서 974247 참조하세요.

가능한 원인 및 해결 방법

배포된 사이트에는 애플리케이션의 bin 폴더 아래에 네이티브 어셈블리가 있는 amd64x86 하위 폴더가 없습니다. SQL Server Compact 설치된 컴퓨터에서 네이티브 어셈블리는 C:\Program Files\Microsoft SQL Server Compact Edition\v4.0\Private에 있습니다. Visual Studio 프로젝트의 올바른 폴더에 올바른 파일을 가져오는 가장 좋은 방법은 NuGet SqlServerCompact 패키지를 설치하는 것입니다. 패키지 설치는 빌드 후 스크립트를 추가하여 네이티브 어셈블리를 amd64x86에 복사합니다. 그러나 이러한 항목을 배포하려면 프로젝트에 수동으로 포함해야 합니다. 자세한 내용은 SQL Server Compact 배포 자습서를 참조하세요.

Entity Framework Code First 애플리케이션을 배포한 후 "경로가 잘못되었습니다." 오류

시나리오

Entity Framework Code First 마이그레이션 사용하는 애플리케이션과 App_Data 폴더의 파일에 데이터베이스를 저장하는 SQL Server Compact 같은 DBMS를 배포합니다. 첫 번째 배포 후에 데이터베이스를 만들도록 Code First 마이그레이션 구성했습니다. 애플리케이션을 실행하면 다음 예제와 같은 오류 메시지가 표시됩니다.

경로가 잘못된 경우 데이터베이스에 대한 디렉터리를 확인합니다. [Path = c:\inetpub\wwwroot\App_Data\DatabaseName.sdf ]

가능한 원인 및 해결 방법

Code First는 데이터베이스를 만들려고 하지만 App_Data 폴더가 없습니다. 배포할 때 App_Data 폴더에 파일이 없거나 Project 속성 창패키지/게시 웹 탭에서 App_Data 제외를 선택했습니다. 서버에 복사할 폴더에 파일이 없으면 배포 프로세스에서 서버에 폴더를 만들지 않습니다. 사이트에 데이터베이스가 이미 설정된 경우 게시 프로필에서 대상에서 추가 파일 제거를 선택한 경우 배포 프로세스에서 파일과 App_Data 폴더 자체를 삭제합니다. 이 문제를 해결하려면 .txt 파일과 같은 자리 표시자 파일을 App_Data 폴더에 배치하고, 제외 App_Data 선택하지 않았는지 확인하고 다시 배포합니다.

"기본 RCW와 분리된 COM 개체는 사용할 수 없습니다."

시나리오

원클릭 게시를 사용하여 애플리케이션을 배포한 후 다음 오류가 발생합니다.

웹 배포 작업이 실패했습니다. (원격 에이전트 URL ''<https://serverurl.com/msdeploy.axd?site=sitename>에 대한 요청을 완료할 수 없습니다.)
원격 에이전트 URL ''<https://url/msdeploy.axd?site=sitename>에 대한 요청을 완료할 수 없습니다.
요청이 중단되었습니다. 요청이 취소되었습니다.
기본 RCW에서 분리된 COM 개체는 사용할 수 없습니다.

가능한 원인 및 해결 방법

Visual Studio를 닫고 다시 시작하는 것은 일반적으로 이 오류를 resolve 데 필요합니다.

게시에 사용되는 사용자 자격 증명에 setACL 기관이 없으므로 배포가 실패합니다.

시나리오

폴더 권한을 설정할 권한이 없음을 나타내는 오류와 함께 게시가 실패합니다(사용 중인 사용자 계정에 setACL 권한이 없음).

가능한 원인 및 해결 방법

기본적으로 Visual Studio는 사이트의 루트 폴더에 대한 읽기 권한을 설정하고 App_Data 폴더에 대한 쓰기 권한을 설정합니다. 사이트 폴더에 대한 기본 권한이 올바르고 설정할 필요가 없다는 것을 알고 있는 경우 IncludeSetACLProviderOn Destination>False</IncludeSetACLProviderOnDestination>을 게시 프로필 파일(단일 프로필에 영향을 주도록) 또는 wpp.targets 파일(모든 프로필에 영향을 주도록)에 추가하여< 이 동작을 사용하지 않도록 설정합니다. 이러한 파일을 편집하는 방법에 대한 자세한 내용은 방법: 프로필(.pubxml) 파일에서 배포 설정 편집을 참조하세요.

애플리케이션이 애플리케이션 폴더에 쓰려고 할 때 액세스 거부 오류

시나리오

해당 폴더에 대한 쓰기 권한이 없기 때문에 애플리케이션이 애플리케이션 폴더 중 하나에서 파일을 만들거나 편집하려고 할 때 오류가 발생합니다.

가능한 원인 및 해결 방법

기본적으로 Visual Studio는 사이트의 루트 폴더에 대한 읽기 권한을 설정하고 App_Data 폴더에 대한 쓰기 권한을 설정합니다. 애플리케이션에서 하위 폴더에 대한 쓰기 권한이 필요한 경우 이 시리즈의 프로덕션 환경 자습서 및 폴더 사용 권한 설정 및 배포에 표시된 대로 해당 폴더에 대한 권한을 설정할 수 있습니다. 애플리케이션이 사이트의 루트 폴더에 대한 쓰기 액세스 권한이 필요한 경우 IncludeSetACLProviderOn Destination>False</IncludeSetACLProviderOnDestination>을 게시 프로필 파일(단일 프로필에 영향을 주도록) 또는 wpp.targets 파일(모든 프로필에 영향을 주도록)에 추가하여< 루트 폴더에 대한 읽기 전용 액세스를 설정하지 않도록 해야 합니다. 이러한 파일을 편집하는 방법에 대한 자세한 내용은 방법: 프로필(.pubxml) 파일에서 배포 설정 편집을 참조하세요.

구성 오류 - targetFramework 특성은 설치된 버전의 .NET Framework 이후 버전을 참조합니다.

시나리오

ASP.NET 4.5를 대상으로 하는 웹 프로젝트를 성공적으로 게시했지만 애플리케이션을 실행하면(Web.config 파일에서 customErrors 모드가 "off"로 설정됨) 다음 오류가 발생합니다.

Web.config 파일의 컴파일> 요소에 있는 <'targetFramework' 특성은 .NET Framework 버전 4.0 이상을 대상으로 하는 데만 사용됩니다(예: '<compilation targetFramework="4.0">'). 'targetFramework' 특성은 현재 설치된 버전의 .NET Framework 이후 버전을 참조합니다. .NET Framework 유효한 대상 버전을 지정하거나 필요한 버전의 .NET Framework 설치합니다.

오류 페이지의 원본 오류 상자는 오류의 원인으로 Web.config 다음 줄을 강조 표시합니다.

<compilation targetFramework="4.5" />

가능한 원인 및 해결 방법

서버는 ASP.NET 4.5를 지원하지 않습니다. 호스팅 공급자에게 문의하여 ASP.NET 4.5에 대한 지원을 추가할 수 있는 시기와 시기를 결정합니다. 서버 업그레이드가 옵션이 아닌 경우 대신 ASP.NET 4 이하를 대상으로 하는 웹 프로젝트를 배포해야 합니다.

ASP.NET 4 이전 웹 프로젝트를 동일한 대상에 배포하는 경우 웹 게시 마법사의 설정에서 대상 검사 추가 파일 제거 상자를 선택합니다. 대상에서 추가 파일 제거를 선택하지 않으면 구성 오류 페이지가 계속 표시됩니다.

프로젝트 속성 창에는 대상 프레임워크 드롭다운 목록이 포함되어 있지만 .NET Framework 4.5에서 .NET Framework 4로 변경하면 이 문제를 resolve 수 없습니다. 대상 프레임워크를 이전 프레임워크 버전으로 변경하는 경우 프로젝트는 여전히 이후 프레임워크 버전의 어셈블리에 대한 참조를 가지며 실행되지 않습니다. 이러한 참조를 수동으로 변경하거나 .NET Framework 4 이하를 대상으로 하는 새 프로젝트를 만들어야 합니다. 자세한 내용은 .NET Framework 대상 지정을 참조하세요.

중간 신뢰 오류

시나리오

프로덕션 환경에서 애플리케이션을 실행하면 중간 신뢰와 관련된 오류가 발생합니다.

가능한 원인 및 해결 방법

많은 타사 호스팅 공급자는 중간 신뢰로 웹 사이트를 실행합니다. 즉, 허용되지 않는 몇 가지 사항이 있습니다. 예를 들어 애플리케이션 코드는 Windows 레지스트리에 액세스할 수 없으며 애플리케이션의 폴더 계층 구조 외부에 있는 파일을 읽거나 쓸 수 없습니다. 기본적으로 애플리케이션은 로컬 컴퓨터에서 완전 신뢰 로 실행됩니다. 즉, 애플리케이션이 프로덕션 환경에 배포할 때 실패할 수 있는 작업을 수행할 수 있습니다.

문제를 해결하기 위해 로컬 IIS 환경에서 중간 신뢰로 실행되도록 애플리케이션을 구성할 수 있습니다. 이렇게 하려면 이 예제와 같이 애플리케이션 Web.config 파일을 열고 system.web 요소에 trust 요소를 추가합니다.

<configuration>
  <!-- Settings -->
  <system.web>
    <trust level="Medium" />
    <!-- Settings -->
  </system.web>
</configuration>

이제 애플리케이션은 로컬 컴퓨터에서도 IIS에서 중간 신뢰로 실행됩니다.

Azure에는 중간 신뢰가 필요하지 않으므로 Azure App Service 배포하는 경우에는 이 작업을 수행하지 마세요. 이 자습서가 2012년 2월에 작성될 때 이 메서드를 사용하여 애플리케이션을 중간 신뢰 상태로 실행하면 Azure에서 오류가 발생합니다.

Entity Framework Code First 마이그레이션 사용하고 중간 신뢰로 애플리케이션을 실행하는 호스팅 공급자에 배포하는 경우 버전 5.0 이상이 설치되어 있는지 확인합니다. Entity Framework 버전 4.3에서 마이그레이션은 데이터베이스 스키마를 업데이트하기 위해 완전 신뢰가 필요합니다.

HTTP 404.17 찾을 수 없음 오류

시나리오

IIS에서 개발 컴퓨터에서 배포된 사이트를 실행하면 서버에서 Default.aspx를 처리할 수 없다는 다음 오류 메시지가 표시됩니다.

HTTP 오류 404.17 - 찾을 수 없음

요청된 콘텐츠는 스크립트로 표시되며 정적 파일 처리기에서 제공되지 않습니다.

가능한 원인 및 해결 방법

ASP.NET 4.5가 컴퓨터에 설치되지 않았을 수 있습니다. 이 시리즈의 IIS에 테스트 환경으로 배포 자습서의 단계를 참조하여 ASP.NET 4.5를 설치하는 방법을 설명합니다.