snehanshu
asked on
Reading a file into a buffer from in asp.net: error "Logon failure: unknown user name or bad password."
Hello experts!
We are facing an interesting problem.
We have some tiff image files located on a remote shared folder, say
\\172.23.45.66\Shared\Imag es
Only specific logins are given access to this folder.
Now, on my webpage, if I place an image control, and set its src value as follows:
myImg.Src = @"\\172.23.45.66\Shared\Im ages\tmpin .jpg";"
Then the code works and the image is displayed.
But, If we try to read the image into a buffer as follows:
byte[] buf = null;
System.IO.FileStream fs = new System.IO.FileStream(myImg .Src, System.IO.FileMode.Open, System.IO.FileAccess.Read) ;
buf = new byte[fs.Length];
fs.Read(buf, 0, buf.Length);
fs.Close();
then we get the following error:
"Logon failure: unknown user name or bad password. "
It is very important that we load the file into a buffer.
So, can some one suggest what could be the problem and how it can be solved?
Note that it is not possible for us to create additional shares or virtual Web folders for the file directory, because the address can be anything that the user has rights to: it is not necessarily one single folder.
So, we are looking for a generic solution to load a file into a buffer from an ASP .net page if the current windows user has rights to access the folder.
Looking forward to your help.
Thanks,
...Shu
We are facing an interesting problem.
We have some tiff image files located on a remote shared folder, say
\\172.23.45.66\Shared\Imag
Only specific logins are given access to this folder.
Now, on my webpage, if I place an image control, and set its src value as follows:
myImg.Src = @"\\172.23.45.66\Shared\Im
Then the code works and the image is displayed.
But, If we try to read the image into a buffer as follows:
byte[] buf = null;
System.IO.FileStream fs = new System.IO.FileStream(myImg
buf = new byte[fs.Length];
fs.Read(buf, 0, buf.Length);
fs.Close();
then we get the following error:
"Logon failure: unknown user name or bad password. "
It is very important that we load the file into a buffer.
So, can some one suggest what could be the problem and how it can be solved?
Note that it is not possible for us to create additional shares or virtual Web folders for the file directory, because the address can be anything that the user has rights to: it is not necessarily one single folder.
So, we are looking for a generic solution to load a file into a buffer from an ASP .net page if the current windows user has rights to access the folder.
Looking forward to your help.
Thanks,
...Shu
<form runat="server" enctype="multipart/form-da ta" ID="Form2">
<P>
<input type="file" id="file1" runat="server" NAME="file1">
</P>
<P>
<asp:Button id="btn1" runat="server" text="Upload" onclick="upload" />
</P>
</form>
-------------------------- ---------- ---------- ---------- ---------- ---------- ----------
Imports System.Data
Imports System.Data.SqlClient
Public Sub Upload(ByVal sender As Object, ByVal e As System.EventArgs)
Dim b(file1.PostedFile.InputSt ream.Lengt h - 1) As Byte
file1.PostedFile.InputStre am.Read(b, 0, file1.PostedFile.InputStre am.Length)
Dim con As New SqlConnection(Configuratio nSettings. AppSetting s("Connect ionStringS QL"))
Dim sql As String = "INSERT INTO MY_TABLE(MyID, DATABLOB) VALUES(1,@BlobData) "
Dim cmd As New SqlCommand(sql, con)
Dim parmBlob As New SqlParameter("@BlobData", SqlDbType.VarBinary, _
b.Length, ParameterDirection.Input, False, 0, _
0, Nothing, DataRowVersion.Current, b)
cmd.Parameters.Add(parmBlo b)
con.Open()
cmd.ExecuteNonQuery()
con.Close()
End Sub
Aeros
<P>
<input type="file" id="file1" runat="server" NAME="file1">
</P>
<P>
<asp:Button id="btn1" runat="server" text="Upload" onclick="upload" />
</P>
</form>
--------------------------
Imports System.Data
Imports System.Data.SqlClient
Public Sub Upload(ByVal sender As Object, ByVal e As System.EventArgs)
Dim b(file1.PostedFile.InputSt
file1.PostedFile.InputStre
Dim con As New SqlConnection(Configuratio
Dim sql As String = "INSERT INTO MY_TABLE(MyID, DATABLOB) VALUES(1,@BlobData) "
Dim cmd As New SqlCommand(sql, con)
Dim parmBlob As New SqlParameter("@BlobData", SqlDbType.VarBinary, _
b.Length, ParameterDirection.Input, False, 0, _
0, Nothing, DataRowVersion.Current, b)
cmd.Parameters.Add(parmBlo
con.Open()
cmd.ExecuteNonQuery()
con.Close()
End Sub
Aeros
System.IO.FileStream fs = new System.IO.FileStream(@"\\1 72.23.45.6 6\Shared\I mages\tmpi n.jpg", System.IO.FileMode.Open, System.IO.FileAccess.Read) ;
try hardcoding it for a while...
also try (@"\\172.23.45.66\\Shared\ \Images\\t mpin.jpg",
try hardcoding it for a while...
also try (@"\\172.23.45.66\\Shared\
ASKER CERTIFIED SOLUTION
membership
This solution is only available to members.
To access this solution, you must be a member of Experts Exchange.
ASKER
jnhorst,
Thanks for your comment.
Your comment helped us understand the problem and we have made changes to the design based on this understanding.
Thanks again,
...Shu
Thanks for your comment.
Your comment helped us understand the problem and we have made changes to the design based on this understanding.
Thanks again,
...Shu
Glad to help.
John
John
ASKER
John,
May I ask a follow-up question please?
If I want to use option 3, can you tell me how to do it?
I would like to take take the windows username and password from a database and execute the file access code under that user (security context or whatever it is called).
I know that for windows based application, we have APIs to impersonate a certain user and execute parts of code as a different user. Are there any web-equivalents of this: that only certain part of my code is executed as a partucluar username/password that I know (have as string variables)?
...Shu
May I ask a follow-up question please?
If I want to use option 3, can you tell me how to do it?
I would like to take take the windows username and password from a database and execute the file access code under that user (security context or whatever it is called).
I know that for windows based application, we have APIs to impersonate a certain user and execute parts of code as a different user. Are there any web-equivalents of this: that only certain part of my code is executed as a partucluar username/password that I know (have as string variables)?
...Shu
You can do this (having certain code running under a particular user's account) in a COM+ application that you instantiate in your web app, but I have not done this in .NET, only back in old school asp. But if you want to use a certain account for a web app (the whole app), you can do this:
<identity impersonate="true" username="userslogin" password="password" />
I do not like doing this (putting secure info in a clear text file that exists on the server) but it can be done.
John
<identity impersonate="true" username="userslogin" password="password" />
I do not like doing this (putting secure info in a clear text file that exists on the server) but it can be done.
John
ASKER
Thanks again John!
We will try this.
...Shu
We will try this.
...Shu
Dim strBuffer As String = r.ReadToEnd
'DO SOMETHING HERE WITH strBuffer
r.Close()