我想保存到数据库中一个路径,现在首先有这样几个变量
string path=HttpContext.Current.Server.MapPath("/news/");
path+=DateTime.Now.ToString("yyyyMM")+"/";然后还有文件名string htmlfilename=DateTime.Now.ToString("yyyyMMddHHmmss")+".html";
然后我就想 根据这几个内容来保存路径
如果我定义一个变量strURL,strURL=path + htmlfilename;
这样保存到数据库里的路径就是:c:\inetpub\wwwroot\news\200608/20060816214344.html这样的,这个字段本意是想实现当需要显示这个内容的时候,直接读取这个字段的值,便可当作网址来访问,所以保存成这样的值是不行的
我想问问高手,怎么样能实现根据我上边的内容,把这个strURL的结果变成是http://..../news/200608/20060816214344.html呢,http://....这个内容可以让程序自动获取
盼望得到高手的指点,先谢谢

解决方案 »

  1.   

    don't use Server.MapPath, if you are using .NET 2.0, also look into System.Web.VirtualPathUtility class
      

  2.   

    不要用MapPath进行转换"/news/"就行了,数据库中只需要保存"/news/200608/20060816214344.html",这个加入到网页中后会自动使用当前的域名或Ip进行访问的,试试就明白了..
      

  3.   

    可是我上边那样写之后,就没有办法取到"/news/200608/20060816214344.html“这个路径了
    我可以怎么办,才能在上边的基础上取到这样的值呢
      

  4.   

    我还必须用Server.Mapth,因为首先我要取出这个绝对路径,首先是要按着这个路径添加上内容,其中这个路径是在变化的,按着月份会生成多个以年月为名称的文件夹
    然后我还想保存这个地址,就出现了那样的问题
      

  5.   

    长痛不如短痛,直接把数据里的数据的c:\inetpub\wwwroot\写个sql去掉吧,再把原来的设计给改了
      

  6.   

    我晕,你就不能用二个变量啊,一个用于生成文件夹,一个用于保存到数据库中string path=HttpContext.Current.Server.MapPath("/news/");string virtualPath = DateTime.Now.ToString("yyyyMM")+"/";
    string strURL= virtualPath + htmlfilename;把 path + strURL用于生成文件夹
    把 "/news/" + strURL 保存以数据库中
      

  7.   

    peacefulsword(中国幽剑软件)
    按着你刚写的那个就是保存成了你说的那种路径
    那么我显示的时候怎么根据数据库的那个字段实现呢?
    比如我现在是直接使用的<a href='<%# (DataBinder.Eval(Container.DataItem,"ArticleUrl")).ToString() %>' target=_blank>那个articleUrl字段就是刚刚保存这个 路径的
      

  8.   

    现在还有一个现象是,当我在列表中根据上边保存到数据库里的/news/200608/20060817160822.html
    在datagrid的模板列直接写<a href='<%# (DataBinder.Eval(Container.DataItem,"ArticleUrl")).ToString() %>' target=_blank>
    就可以正确显示出当前页,而且地址栏显示的地址是:http://localhost/news/200608/20060817160822.html
    这个是正确的
    可是还有一个问题:当我想修改这个html文件时候,我也是那样从数据库读ArticleUrl字段,然后想直接覆盖原来的这个文件
    但是路径就出现了错误,修改时候查这个字段取的是“未找到路径“C:\news\200608\20060817160822.html”的一部分。”
    这个路径就变成了这样的,成了C盘根目录下的一个文件了
    正确的该怎么取呢
      

  9.   

    保存到文件系统时使用绝对路径,c:\...\..\..\
    保存到数据库时使用相对路径 news/xxx.html读取并定向时也使用相对路径.
      

  10.   

    修改的时候再用MapPath转换成物理路径就行了