2011-12-13 4 views
0

우리는 pdf 제작 문제를 해결하고 모든 것이 디버그에서 예상대로 작동하는 frankenstein webservice가 있지만 테스트 IIS7 서버에 게시하면 실행되지만 PDF를 얻지 마십시오.Webservice pdf 파일은 디버그에서 작동하지만 게시 한 후에는 작동하지 않습니다.

이 기능 callse 웹 사이트와는 claimId 차례에서 PDF 형태로 읽는 함수를 호출

Public Function QServices_QAudit_GetWorkersCompCoverPage(ByVal claimId As Long) As Byte() 
    Dim sess As General.Session = Session.Item("sessionObject") 
    Dim pdfDocument As System.IO.MemoryStream 
    If Not AuthorizeUser(sess, Context, "qaudit") Then Return Nothing 

    pdfDocument = QAudit.QAuditData.GetWorkersCompCoverPage(claimId, sess) 
    If pdfDocument Is Nothing Then Return Nothing 

    Dim retValue As Byte() 
    ReDim retValue(0 To pdfDocument.Length - 1) 
    Dim i As Long 
    pdfDocument.Seek(0, IO.SeekOrigin.Begin) 
    For i = 0 To pdfDocument.Length - 1 
     retValue(i) = pdfDocument.ReadByte() 
    Next 

    Return retValue 

End Function 

에 전달하는 필드는 다음 파일 시스템에 저장하는 메모리 스트림으로 변환 웁니다 그것을 반환합니다. 바이트 스트림으로 변환되어 웹 사이트로 다시 전송됩니다. 모든 것이 디버그에서 훌륭하게 작동하지만 게시 후 pdf는 절대로 저장되지 않습니다. 나는 빈 pdf 양식이나 완성 된 양식을 쓰는 폴더에 권한 문제가 있다고 생각하고 있지만 네트워크 서비스를 포함하여 생각할 수있는 모든 권한을 부여했습니다. IUSR, IIS_USRS 및 인증 된 사용자이지만 결과에는 변화가 없습니다. 응용 프로그램 풀을 네트워크 서비스, 로컬 서비스, 로컬 시스템 및 기본값으로 설정했으며 여전히 기쁨은 없습니다.

다른 권한 집합이있는 경우 아이디어가 있습니까? IIS7에서 파일을 읽거나 쓸 수 없게하는 다른 설정이 있습니다.

+0

힌트 # 1 :'pdfDocument' 주위에'Using' 블럭 넣기 –

+0

구조적 예외 처리 (try/catch)를 추가하고 프로덕션 시스템에서 어딘가에 발생하는 예외를보고해야합니다 (텍스트 기반 로그 파일 아무것도 아닌 것보다 낫다.) 예외가 없으면 문제가 AuthorizeUser 메서드에 있고 로깅을 추가하여 실패한 이유를 확인할 수 있습니다. 그들이 말한 것처럼 –

+0

curiouser와 curiouser. Chrome을 사용하면 사이트가 작동 할 것으로 보이지만 IE를 사용하여 베타 사이트를 보면 제작 사이트로 리디렉션 된 것으로 보입니다. 우리는 네트워크 정책과 IE 설정을 통해 이러한 동작이 설정 될 수있는 곳을 찾을 수 있는지 확인하고 있습니다. – Brian

답변

0

마지막으로이 사이트로 돌아가지만 IIS 7이 느슨해 진 폴더 사용 권한 조합 (웹 사이트를 게시 할 때마다)과 웹 서비스의 응용 프로그램 풀 사용 권한 (.net)이 다른 수준에서 실행되고 있기 때문에 배웠습니다. 기본적으로 우리는 webservice에서 pdf 로직을 웹 사이트 appcode 폴더로 옮기고이 폴더에 로컬 iis 사용자 권한을주었습니다 (Windows 탐색기가 아닌 IIS를 통해). 모든 것이 안정적입니다.

관련 문제