我有一个Web安装项目。在设置中,我有一个输入字段,用户可以在其中插入连接字符串。当我运行安装程序时,我得到这个错误:
错误1001。未知错误(0x8000x5000)
为了跟踪错误存在的位置,我创建了一个文件,并在每个方法中都向该文件中写入了一些内容。现在我认为错误是由下面这行引起的:
string friendlySiteName = entry.Properties["ServerComment"].Value.ToString();但是我不知道如何纠正这个问题。我希望你能帮帮我!
代码:
public override void Install(System.Collections.IDictionary stateSaver)
{
base.Install(stateSaver);
// Retrieve configuration settings
string targetSite = Context.Parameters["targetsite"];
string targetVDir = Context.Parameters["targetvdir"];
string targetDirectory = Context.Parameters["targetdir"];
string targetConnectionString = Context.Parameters["targetconn"];
FileStream f = new FileStream("c:\\myfile.txt", FileMode.OpenOrCreate, FileAccess.ReadWrite);
StreamWriter w = new StreamWriter(f);
w.WriteLine("targetSite: " + targetSite);
w.WriteLine("targetVDir: " + targetVDir);
w.WriteLine("targetDirectory: " + targetDirectory);
w.WriteLine("targetConnectionString: " + targetConnectionString);
w.Close();
w.Dispose();
f.Close();
f.Dispose();
ConfigureWebConfig(targetSite, targetVDir, targetConnectionString);
}
void ConfigureWebConfig(string targetSite, string targetVDir, string targetConn)
{
try
{
// Retrieve "Friendly Site Name" from IIS for TargetSite
DirectoryEntry entry = new DirectoryEntry("IIS://LocalHost/" + targetSite);
FileStream f = new FileStream("c:\\myfile.txt", FileMode.Append, FileAccess.Write);
StreamWriter w = new StreamWriter(f);
w.WriteLine("In ConfigureWebConfig stap 1 ");
w.Close();
w.Dispose();
f.Close();
f.Dispose();
string friendlySiteName = entry.Properties["ServerComment"].Value.ToString();
f = new FileStream("c:\\myfile.txt", FileMode.Append, FileAccess.Write);
w = new StreamWriter(f);
w.WriteLine("In ConfigureWebConfig friendlySiteName: " + friendlySiteName);
w.Close();
w.Dispose();
f.Close();
f.Dispose();
// Open Application's Web.Config
Configuration config = WebConfigurationManager.OpenWebConfiguration("/" + targetVDir, friendlySiteName);
addConnectionStringAttribute(targetConn, config);
f = new FileStream("c:\\myfile.txt", FileMode.Append, FileAccess.Write);
w = new StreamWriter(f);
w.WriteLine("In ConfigureWebConfig stap 2 ");
w.Close();
w.Dispose();
f.Close();
f.Dispose();
// togleCompilationAttribute(config);
// Persist web.config settings
config.Save();
f = new FileStream("c:\\myfile.txt", FileMode.Append, FileAccess.Write);
w = new StreamWriter(f);
w.WriteLine("In ConfigureWebConfig stap 3 ");
w.Close();
w.Dispose();
f.Close();
f.Dispose();
}
catch (Exception)
{
throw;
}
}
private static void addConnectionStringAttribute(string connectionStringValue, Configuration config)
{
ConnectionStringSettings appDatabase = new ConnectionStringSettings();
appDatabase.Name = "dataConnectionString";
appDatabase.ConnectionString = connectionStringValue;
appDatabase.ProviderName = "System.Data.SqlClient";
FileStream f = new FileStream("c:\\myfile.txt", FileMode.Append, FileAccess.Write);
StreamWriter w = new StreamWriter(f);
w.WriteLine("In addConnectionStringAttribute stap 1 ");
w.Close();
w.Dispose();
f.Close();
f.Dispose();
config.ConnectionStrings.ConnectionStrings.Clear();
config.ConnectionStrings.ConnectionStrings.Add(appDatabase);
f = new FileStream("c:\\myfile.txt", FileMode.Append, FileAccess.Write);
w = new StreamWriter(f);
w.WriteLine("In addConnectionStringAttribute stap 2 ");
w.Close();
w.Dispose();
f.Close();
f.Dispose();
}发布于 2009-07-14 13:52:59
也许this或this会帮助你。
如果不是这两个原因,则该属性可能不存在。
编辑:
根据this的说法,如果您正在使用Win2k8,如果您收到此错误,则需要启用“IIS元数据库和IIS6配置兼容性”。启用Web服务器角色时,它不会自动安装。
Here是一个相关的问题。
发布于 2009-08-10 14:30:32
if (m_targetSite.StartsWith("/LM/"))
m_targetSite = m_targetSite.Substring(4);在此之前使用上面的代码:
// Retrieve "Friendly Site Name" from IIS for TargetSite
DirectoryEntry entry = new DirectoryEntry("IIS://LocalHost/" + m_targetSite);
m_siteName = entry.Properties["ServerComment"].Value.ToString();https://stackoverflow.com/questions/1125510
复制相似问题