“c:\windows\system32\inetsrv\”的问题

htty326 2009-05-10 10:53:33
我写了一个CDataBaseConnectString类,用于从xml配置文件中读出数据库的相关信息,其中有一个方法是这样的:
public string GetPIMDBConnectString()
{
string strConnectString = "";

XmlReader XReader = XmlReader.Create("PIMDeploy.xml");

XReader.ReadToFollowing("DatabaseDeployInfo");
OleDbConnectionStringBuilder ConBuilder = new OleDbConnectionStringBuilder();
ConBuilder.DataSource = XReader.GetAttribute("DataSource");
ConBuilder.Provider = XReader.GetAttribute("DriverProvider");
strConnectString = ConBuilder.ConnectionString;

return strConnectString;
}
我在主页Default.aspx中创建了CDataBaseConnectString的一个对象,并使用该对象来获取数据库的连接字符串,但是发布后运行老是提示以下信息:

异常详细信息: System.IO.FileNotFoundException: 未能找到文件“c:\windows\system32\inetsrv\PIMDeploy.xml”。


我已经把PIMDeploy.xml文件和Default.aspx文件放在同一个目录下了呀……。在JSP中,只要主页和配置文件是在同一个目录下就没有这样的问题出现……。
请问在asp.net下有没有办法解决呢?

...全文
1022 5 打赏 收藏 转发到动态 举报
写回复
用AI写文章
5 条回复
切换为时间正序
请发表友善的回复…
发表回复
伴老思源 2009-05-12
  • 打赏
  • 举报
回复
Server.MapPath("...")来取路径
htty326 2009-05-11
  • 打赏
  • 举报
回复
可是Server是aps.net的对象,只有在asp.net页面中才可以使用,而在C#类中是无法使用的。
按照我们的一般思维,如果使用CDataBaseConnectString类的asp.net页面只要和PIMDeploy.xml放在相同的目录下的话,应该是可以使用相对路径来访问的,这在JSP中就可以使用这样的方法访问property文件。
周公 2009-05-11
  • 打赏
  • 举报
回复
Request.CurrentExecutionFilePath:CurrentExecutionFilePath 返回当前正在执行的页处理程序的文件路径。
下面的代码示例使用 HtmlEncode 方法以 HTML 方式对 CurrentExecutionFilePath 属性和 WriteLine 方法的值进行编码,以便将已编码的值写入到文件中。此代码示例摘自一个为 HttpRequest 类提供的更大的示例。

// Write request information to the file with HTML encoding.
sw.WriteLine(Request.CurrentExecutionFilePath);
sw.WriteLine(Request.ApplicationPath);
sw.WriteLine(Request.FilePath);
sw.WriteLine(Request.Path);
duping9626 2009-05-10
  • 打赏
  • 举报
回复
XmlReader.Create(Server.MapPath("PIMDeploy.xml"));
蓝海D鱼 2009-05-10
  • 打赏
  • 举报
回复
XmlReader.Create("PIMDeploy.xml");
这里 要用 绝对路径
The MapPath method maps the specified relative or virtual path to the corresponding physical directory on the server.
Parameters (MSDN:ms-help://MS.MSDNQTR.2003FEB.2052/iisref/htm/ref_vbom_serommp.htm)
用法:
1.Server.MapPath("/") 应用程序根目录所在的位置 如 C:\Inetpub\wwwroot\
2.Server.MapPath("./") 表示所在页面的当前目录
注:等价于Server.MapPath("") 返回 Server.MapPath("")所在页面的物理文件路径
3.Server.MapPath("../")表示上一级目录
4.Server.MapPath("~/")表示当前应用级程序的目录,如果是根目录,就是根目录,如果是虚拟目录,就是虚拟目录所在的位置 如:C:\Inetpub\wwwroot\Example\
注:等效于Server.MapPath("~")。

不知道是否正确,研究中......
另:以下几句等效
string filename=Server.MapPath("./") + @"\Web.config";
string filename=Server.MapPath("./") + "/Web.config";
string filename=Server.MapPath("") + @"\Web.config"

附一例子:修改web.config的某一节点的属性值
public void write()
{
string key1 = this.TextBox1.Text;
DataSet ds = new DataSet();
ds.ReadXml(Server.MapPath("")+"/web.config");
// 不是Tables[0]
ds.Tables[1].Rows[0][1] = key1;
ds.AcceptChanges();
ds.WriteXml(Server.MapPath("")+"/web.config");
ds.Dispose();
}

62,046

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术交流专区
javascript云原生 企业社区
社区管理员
  • ASP.NET
  • .Net开发者社区
  • R小R
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

.NET 社区是一个围绕开源 .NET 的开放、热情、创新、包容的技术社区。社区致力于为广大 .NET 爱好者提供一个良好的知识共享、协同互助的 .NET 技术交流环境。我们尊重不同意见,支持健康理性的辩论和互动,反对歧视和攻击。

希望和大家一起共同营造一个活跃、友好的社区氛围。

试试用AI创作助手写篇文章吧