|
Thanks afzaal I have cleared my concept
|
|
|
|
|
Basically, don't use an ArrayList at all - it was superseded in V2.0 of the .NET framework when Generics were added to the C# language: and that was back in 2005! You should not be designing ArrayList into new developments unless you are interfacing with legacy code that requires them.
Use a List<T> instead.
Bad command or file name. Bad, bad command! Sit! Stay! Staaaay...
|
|
|
|
|
Because arrayList has its own operatons on list different from array
|
|
|
|
|
Hi.
I'm using WebBrowser to display authenticated web page. I implemented the interfaces decribed in this post.
object obj = myBrowser.ActiveXInstance;
IOleObject oc = obj as IOleObject;
oc.SetClientSite(this as IOleClientSite);
string authHeader = "WWW-Authenticate: Negotiate\r\n";
myBrowser.Navigate(_URL, "", null, authHeader);
I'm using Negotiate so I can use also SSO. The authenticate method is implemented like this:
public int Authenticate(ref IntPtr phwnd, ref IntPtr pszUsername, ref IntPtr pszPassword)
{
pszUsername = Marshal.StringToCoTaskMemAuto("user");
pszPassword = Marshal.StringToCoTaskMemAuto("pass");
return S_OK;
}
It works well. But the problem is when I want to authenticate the user with different domain. This doesn't work:
pszUsername = Marshal.StringToCoTaskMemAuto(@"domain\user");
pszUsername = Marshal.StringToCoTaskMemAuto("user@domain");
I'm not able to display the page for users with different domains. It returns unauthorized.
I don't know what changes to make so it's working..
Thank you.
|
|
|
|
|
Forget about the code for a second; can you give us an example of which domain you would like to authenticate? See, if you're authenticating someone from, say, Microsoft, then their domain-server would have to trust[^] yours.
The network-name might not always the same as the domain that is used on the internet.
Bastard Programmer from Hell
If you can't read my code, try converting it here[^]
|
|
|
|
|
The app I'm connecting to, runs on our server. There is also web login to the server app. The users log in using domain with their username (domain\user1).
I'm not very familiar with this technology but I will look up necessary facts, if you need more info.
|
|
|
|
|
..so, the user opens a webpage on your webserver, logs in using a form? Can the user login using those credentials using a regular browser?
Bastard Programmer from Hell
If you can't read my code, try converting it here[^]
|
|
|
|
|
Yes, the user can log in using the form on webpage with the given credentials. In the web form the user selects the domain, put down the username and password. As I was told the domain and the username are then put together like this "domain\username" when the logging is being processed.
That led me to conclusion that I should concatenate the domain and the username in the winforms app too. But I'm getting unauthorised.
So I thought that there is something else I should set..
|
|
|
|
|
kubiiik wrote: So I thought that there is something else I should set.. You should be able to sign in on your own website without modifications. The WebBrowser-control is "just" an instance of IE, nothing special.
The thing that threw me off was the reference to "other domains". You wouldn't be able to authenticate people from the domain our company uses, simply because it is outside the network.
Bastard Programmer from Hell
If you can't read my code, try converting it here[^]
|
|
|
|
|
Eddy Vluggen wrote: You should be able to sign in on your own website without modifications. The WebBrowser-control is "just" an instance of IE, nothing special.
Just to clarify, we do not display any login page in the webBrowser. If the user log in using regular browser, the log in page is displayed. But when using the C# winforms app, the log in is set in the app and used as string in the Authenticate method.
Eddy Vluggen wrote: The thing that threw me off was the reference to "other domains". You wouldn't be able to authenticate people from the domain our company uses, simply because it is outside the network.
I don't understand the domain users much (I had to google more info about it), but I think that the domain controller should handle the users (according to http://www.howtogeek.com/194069/what-is-a-windows-domain-and-how-does-it-affect-my-pc/[^]).
|
|
|
|
|
kubiiik wrote: Just to clarify, we do not display any login page in the webBrowser. If the user log in using regular browser, the log in page is displayed. But when using the C# winforms app, the log in is set in the app and used as string in the Authenticate method. Thanks for that clarification
I was expecting windows-authentication, which would not require a special login.
kubiiik wrote: I don't understand the domain users much (I had to google more info about it), but I think that the domain controller should handle the users Yes, but you won't be able to verify anyone outside your own domain.
Bastard Programmer from Hell
If you can't read my code, try converting it here[^]
|
|
|
|
|
According to the new information I got, the server end has only implemented WindowsBasicAuthenticator, which ignores these domains.
But unless the server end implementation is updated, I will not know that for sure.
Anyway, thank you for your time
|
|
|
|
|
I recently installed Microsoft Visual Studio Community 2015.
When running my app in Visual Studio (developed with previous version of Visual c# as express edition 2005, 2008, 2010) , it's ending on unhandled exceptions rather than showing a message box with the exception info and continuing on as I was used to.
What options do I need to change to get it back to the behavior I'm used to (with Visual c# express edition 2005, 2008, 2010)?
Regards
Roberto
|
|
|
|
|
Since we have no idea what your code is doing, it is impossible to answer. You need to collect more information about where the exception occurs, and why.
|
|
|
|
|
Ok I think that what is doing the sw now is not important. Before (years ago), when I was creating the app and testing it (but this was common to any app created in the past), the environment Visualc# express edition 2010 was configured in a way that, in case of error, a popupwindow was showed besides the line where the code was halted because of a Runtime error. Popup Windows was giving some information, in some cases very exhaustive in some other less but useful anyway about the reason of the fault.The line of code itself was highlighted green (or some other color i can't remember). So I knew where the code had a problem (Runtime). Now the point of your question is exactly this. In the new environment I cannot identify neither the point nor the reason for the fault. The app exits and simply return an error code not so useful in my opinion.
Regards
Roberto
|
|
|
|
|
The information should all be provided by the debugger.
|
|
|
|
|
Check out the options under Tools -> Options -> Debugging -> General
Speed of sound - 1100 ft/sec
Speed of light - 186,000 mi/sec
Speed of stupid - instantaneous.
|
|
|
|
|
Ok I did this trying to follow suggestions found around on the net. None was working. So what should I check or uncheck in your opinion?
Regards
Roberto
|
|
|
|
|
Break all processes
Break when exceptions cross AppDomains
Enable the Exception Assistant
Speed of sound - 1100 ft/sec
Speed of light - 186,000 mi/sec
Speed of stupid - instantaneous.
|
|
|
|
|
And if nothing there helps, put an unhandled exception handler in your code and find out what is going on.
Speed of sound - 1100 ft/sec
Speed of light - 186,000 mi/sec
Speed of stupid - instantaneous.
|
|
|
|
|
Ok I set all exceptions around to break the app. It doesn't seem to work. But then I added this :
int j = 0;
int i = 3 / j;
and I had the usual behaviour with line "int i = 3 / j;" highlighted and the relevant exception display.
code is something like :
[DllImport("AVICAP32.dll")]
public static extern bool capGetDriverDescriptionA(
short wDriver,
string lpszName,
int cbName,
string lpszVer,
int cbVer
);
bool bReturn;
bReturn = MyAppCam.Capture.capGetDriverDescriptionA(x,strName,100,strVer,100);
I know that code is stopping on "bReturn = MyAppCam.Capture.capGetDriverDescriptionA ... "
Regards
Roberto
|
|
|
|
|
private void fnLoadSignature()
{
try
{
SqlConnection con = new SqlConnection(conString);
con.Open();
string sql = "SELECT SignatureOfMember FROM CIF WHERE CIFKey = '" + txtcifkey.Text + "'";
cmd = new SqlCommand(sql, con);
object value = cmd.ExecuteScalar();
byte[] data = (byte[])cmd.ExecuteScalar();
MemoryStream strm = new MemoryStream();
strm.Write(data, 0, data.Length);
strm.Position = 0;
System.Drawing.Image img = System.Drawing.Image.FromStream(strm);
BitmapImage bi = new BitmapImage();
bi.BeginInit();
MemoryStream ms = new MemoryStream();
img.Save(ms, System.Drawing.Imaging.ImageFormat.Bmp);
ms.Seek(0, SeekOrigin.Begin);
bi.StreamSource = ms;
error is her------ bi = SigPics.Cursor;
bi.EndInit();
}
catch (Exception ex)
{
MessageBox.Show(ex.Message);
}
}
|
|
|
|
|
You never described what you mean by "load signature pad" and your code says there's an exception being thrown but you never say what that exception is.
With the complete lack of information you provided, the only thing anyone can tell you is to cal the support line of the manufacturer of the pad you're using.
|
|
|
|
|
And to add to what Dave said: Never concatenate strings to build a SQL command. It leaves you wide open to accidental or deliberate SQL Injection attack which can destroy your entire database. Use Parametrized queries instead.
Bad command or file name. Bad, bad command! Sit! Stay! Staaaay...
|
|
|
|
|
Relevant xkcd: Exploits of a Mom
If you have an important point to make, don't try to be subtle or clever. Use a pile driver. Hit the point once. Then come back and hit it again. Then hit it a third time - a tremendous whack.
--Winston Churchill
|
|
|
|