Archive for November, 2008
ASP.net 发布的小问题
Exception Details: System.Data.SqlClient.SqlException: Failed to update database “C:InetpubwwwrootSSRAPP_DATAASPNETDB.MDF” because the database is read-only.
上面的例子通常发生在publish一个新开发的web application的时候,解决方法很简单:即修改App_Data这个目录的Security属性,加入用户”NETWORK SERVICE”,并设置该用户可以对这个目录有Write权限。
[ad]
C# LDAP Wrapper
Before you try to run the following code, please download Novel LDAP lib:
http://forge.novell.com/modules/xfcontent/downloads.php/ldapcsharp/ldapcsharp/CsharpLDAP-v2.1.10/
using System;
using System.Collections.Generic;
using System.Text;
using Novell.Directory.Ldap;
namespace LDAPUtility
{
class LDAPUtil
{
private string ldapHost = "ssuzdc3";
private int ldapPort = 389;
LdapConnection ldapConn = null;
private void Connect()
{
try
{
// Creating an LdapConnection instance
ldapConn = new LdapConnection();
// Connect function will create a socket connection to the server
ldapConn.Connect(ldapHost, ldapPort);
// Bind function with null user dn and password value will perform anonymous bind
// to LDAP server
ldapConn.Bind(null, null);
}
catch (Exception e)
{
// failed to connect to server
}
}
private void Disconnect()
{
ldapConn.Disconnect();
ldapConn = null;
}
public string GetSupervisor(string id)
{
Connect();
string boss = "";
try
{
LdapSearchResults lsc = ldapConn.Search("OU=Users,OU=Suzhou,DC=charry,DC=org",
LdapConnection.SCOPE_ONE,
"sAMAccountName=" + id,
null,
false);
while (lsc.hasMore())
{
LdapEntry nextEntry = null;
try
{
nextEntry = lsc.next();
}
catch (LdapException e)
{
// Exception is thrown, go for next entry
continue;
}
LdapAttribute attribute = nextEntry.getAttribute("manager");
boss = attribute.StringValue;
}
}
catch (Exception e)
{
// exception
}
Disconnect();
return GetAMAcountName(boss);
}
private string GetFullName(string id)
{
// CN=Wang, Charry,OU=Users,OU=Suzhou,DC=charry,DC=org
int end = id.IndexOf("OU=");
id = id.Substring(3, end - 4);
id = id.Replace("\", "");
return id;
}
// convert distinguished name to AMAcountName
public string GetAMAcountName(string id)
{
id = GetFullName(id);
Connect();
string tmp = "";
try
{
LdapSearchResults lsc = ldapConn.Search("OU=Users,OU=Suzhou,DC=charry,DC=org",
LdapConnection.SCOPE_ONE,
"displayName=" + id,
null,
false);
while (lsc.hasMore())
{
LdapEntry nextEntry = null;
try
{
nextEntry = lsc.next();
}
catch (LdapException e)
{
// Exception is thrown, go for next entry
continue;
}
LdapAttribute attribute = nextEntry.getAttribute("sAMAccountName");
tmp = attribute.StringValue;
}
}
catch (Exception e)
{
// exception
}
Disconnect();
return tmp;
}
public string GetDisplayName(string id)
{
Connect();
string name = "";
// get fullname
try
{
LdapSearchResults lsc = ldapConn.Search("OU=Users,OU=Suzhou,DC=charry,DC=org",
LdapConnection.SCOPE_ONE,
"sAMAccountName=" + id,
null,
false);
while (lsc.hasMore())
{
LdapEntry nextEntry = null;
try
{
nextEntry = lsc.next();
}
catch (LdapException e)
{
// Exception is thrown, go for next entry
continue;
}
LdapAttribute attribute = nextEntry.getAttribute("displayName");
name = attribute.StringValue;
}
}
catch (Exception e)
{
// exception
}
Disconnect();
return name;
}
public string GetEmail(string id)
{
Connect();
string email = "";
try
{
LdapSearchResults lsc = ldapConn.Search("OU=Users,OU=Suzhou,DC=charry,DC=org",
LdapConnection.SCOPE_ONE,
"sAMAccountName=" + id,
null,
false);
while (lsc.hasMore())
{
LdapEntry nextEntry = null;
try
{
nextEntry = lsc.next();
}
catch (LdapException e)
{
// Exception is thrown, go for next entry
continue;
}
LdapAttribute attribute = nextEntry.getAttribute("mail");
email = attribute.StringValue;
}
}
catch (Exception e)
{
// exception
}
Disconnect();
return email;
}
public static void test()
{
string ldapHost = "ssuzdc3";
int ldapPort = 389;
try
{
// Creating an LdapConnection instance
LdapConnection ldapConn = new LdapConnection();
// Connect function will create a socket connection to the server
ldapConn.Connect(ldapHost, ldapPort);
// Bind function with null user dn and password value will perform anonymous bind
// to LDAP server
ldapConn.Bind(null, null);
// Searches in the Marketing container and return all child entries just below this
// container i.e. Single level search
LdapSearchResults lsc = ldapConn.Search("OU=Users,OU=Suzhou,DC=charry,DC=org",
LdapConnection.SCOPE_ONE,
"sAMAccountName=qinick",
null,
false);
while (lsc.hasMore())
{
LdapEntry nextEntry = null;
try
{
nextEntry = lsc.next();
}
catch (LdapException e)
{
Console.WriteLine("Error: " + e.LdapErrorMessage);
// Exception is thrown, go for next entry
continue;
}
Console.WriteLine("n" + nextEntry.DN);
LdapAttributeSet attributeSet = nextEntry.getAttributeSet();
System.Collections.IEnumerator ienum = attributeSet.GetEnumerator();
while (ienum.MoveNext())
{
LdapAttribute attribute = (LdapAttribute)ienum.Current;
string attributeName = attribute.Name;
string attributeVal = attribute.StringValue;
Console.WriteLine(attributeName + "value:" + attributeVal);
}
}
ldapConn.Disconnect();
}
catch (Exception e)
{
string x = e.Message;
}
Console.Read();
}
}
}
[ad]
Interview Tips
Below are some tips on job interviewing, hope it’ll help you a bit, if you’re seeking a new job, especially during the 2008 global financial crisis.