2010-05-21 4 views
0

GetRawData 함수가 VB.NET 응용 프로그램에서 호출 될 때 올바른 값을 반환 할 수 있지만 ASP.NET 페이지에서 호출 될 때 0을 반환 할 수 있습니까?선언 된 DLL 함수의 동작이 일치하지 않습니다.

클래스 형식 차이 (Form/Page) 및 호출 이벤트 처리기 (Form1_Load, Page_Load)를 제외하고 코드는 완전히 동일합니다.

참고 : 실제 코드에서 # DLL #과 # RAWDATAFILE #은 모두 내 DLL과 원시 데이터 파일에 대한 절대 파일 이름입니다.

참고 : Visual Studio에서 DLL 파일을 만들지 않았습니다.

Form1.vb를

Public Class Form1 

    Declare Auto Function GetRawData Lib "#DLL#" (ByVal filename() As Byte, _ 
                ByVal byteArray() As Byte, _ 
                ByVal length As Int32) As Int32 


    Private Sub Form1_Load(ByVal sender As System.Object, _ 
          ByVal e As System.EventArgs) Handles MyBase.Load 

     Dim buffer(10485760) As Byte 
     Dim msg As String, length As Integer = 10485760 
     Dim filename As String = "#RAWDATAFILE#" 
     length = GetRawData(Encoding.Default.GetBytes(filename), buffer, length) 

Default.aspx.vb

Partial Public Class _Default 
    Inherits System.Web.UI.Page 

    Declare Auto Function GetRawData Lib "#DLL#" (ByVal filename() As Byte, _ 
                ByVal byteArray() As Byte, _ 
                ByVal length As Int32) As Int32 


    Protected Sub Page_Load(ByVal sender As Object, _ 
          ByVal e As System.EventArgs) Handles Me.Load 

     Dim buffer(10485760) As Byte 
     Dim msg As String, length As Integer = 10485760 
     Dim filename As String = "#RAWDATAFILE#" 
     length = GetRawData(Encoding.Default.GetBytes(filename), buffer, length) 
+1

Encunch.Default.WebName을 인쇄하면 두 환경에서 모두 동일합니까? –

+0

예, 동일합니다. – Steven

답변

1

dll과 파일을 ASP.Net bin 디렉토리에두고 거기에서 참조하십시오. 보안 문제로 인해 DLL이 자동으로 실패 할 수 있습니다.

+0

나는 내 bin 폴더에 dll을 넣었지만 여전히 실패했다. 그러나 "프로젝트 등록 정보 (웹 탭)"에서 "NTLM 인증"을 선택했는데 성공했습니다. – Steven

1

임의의 추측 다음 약간 덜 : ASP.NET 프로세스의를 열 수있는 권한이 없습니다 "#RAWDATAFILE#"에 의해 지정된 파일

1

이 DLL 함수는 파일 이름 e 파일의 일부 데이터를 버퍼로 반환합니다. 파일의 전체 경로를 지정하지 않으면 "# rawdatafile #"은 상대 경로가됩니다. 이 asp.net 페이지에서 작동하는 확률은 매우 작습니다. 대신 전체 경로를 지정하십시오 (예 : "something.txt"대신 "c : \ blah \ something.txt").

가능한 많은 고장 모드. DLL 경로 및 asp.net 계정에 이러한 파일에 액세스하는 데 필요한 권한이 있는지 확인하십시오.

관련 문제