2008-11-07 2 views
0

온라인 쇼핑을위한 작은 ASP.NET 웹 사이트를 개발 중입니다. Visual Studio에서 테스트 할 때 모든 것이 잘 작동하지만 더 이상 IIS에 배포 할 필요가 없습니다. .IIS에 배포 할 때 ASP.NET 응용 프로그램이 중단됨

문제는 DLL 파일에있는 것 같습니다.이 DLL 파일에는 초기화하고 모든 제품 정보가있는 다른 서버로 쿼리 요청을 보내는 데 필요한 클래스가 들어 있습니다. 이 DLL은 원래 IKVM을 사용하여 DLL로 변환 된 Jar 파일이었습니다.

나는 예를 들어 IIS의 응용 프로그램, Null 참조 실패 그 DLL에 정의 된 개체를 인스턴스화하려고하는 페이지를 배포 할 때 :

Fulfiller fulfiller = new Fulfiller(); 
string result = fulfiller.initialize("host", port, "user", "pass"); 

반환이 오류 :

System.NullReferenceException : Object reference not set to an instance of an object. at Fulfiller.toLog(String) at Fulfiller.initialize(String str1, Int32 i, String str2, String str3) at Orders.createDataSource()

다시 말하지만, 이것은 VS 개발 서버에서 완벽하게 작동하지만 IIS가 중단되고 이유를 알지 못합니다. IIS에서 실행될 때 DLL이 제대로로드되지 않는 코딩 문제입니까? 하거나 IIS 어쩌면 실행 또는 요청을 보내는에서 DLL을 차단 문제, 나는이 문제를

감사

fulfiller.Initialize은() 일을 무엇

답변

0

를 해결하기 위해 아주 필사적이야? 그 코드를 게시 할 수 있습니까?

오류없이 생성자를 전달한 다음 null-ref를 가질 수 있으므로 분명히 이행자 참조가 있습니다.

3

일반적으로 개발 서버에서 작동하는 프로그램이 IIS에서 작동하지 않는 경우 문제는 권한 부여입니다 (VS 서버는 자격 증명에서 실행되지만 IIS는 "네트워크 서비스"또는 다른 시스템 사용자로 실행 됨).

예를 들어, fulfiller.toLog()에서 코드가 끊어지는 것을 볼 수 있습니다.

toLog() 함수가 로그 파일을 열려고하고 IIS에서 가장 한 사용자에게 읽거나 쓸 수있는 권한이 없습니까?

0

두 번째 로리스의 대답.

dev 서버에 권한이 있습니다. Windows Server 또는 Active Directory를 실행하는 컴퓨터에 배포한다고 가정하면 로그 파일이 저장된 디렉터리를 마우스 오른쪽 단추로 클릭하고 속성을 선택할 수 있어야합니다. 대화 상자에는 보안이라는 탭이 있습니다. 네트워크 서비스 사용자 (또는 IUSR_machinename)가 보이지 않으면 목록에 추가해야합니다. 사용자를 선택하고 읽기 및 쓰기 권한을 할당하십시오.

IIS 사용자에게 전체 응용 프로그램 디렉터리에 대한 전체 사용 권한을 부여하지 마십시오. 이는 거대한 보안 취약점이므로 기본 배포로 현재 필요한 권한을 부여하지 않습니다.

0

IKVM을 사용하지 않았지만 서버에 IKVM 런타임을 설치해야합니다. 서버에서 IKVM을 확인 했습니까?

희망이 도움이됩니다.

관련 문제