我有一个真正的噩梦Server.MapPath().当我调用Server.MapPath("~")在ASP.NET Development Server中运行的应用程序时,它返回以反斜杠结尾的根目录f:\projects\app1\,但我在发布的版本中调用它,安装在IIS中,它返回根目录而没有任何反斜杠c:\inetpub\wwwroot\app1.为什么会这样?怎么可以避免?
我在同一台机器上做了两个场景:Windows Server 2008 R2 x64,Visual Studio 2010 x64,IIS 7.
更新:
我为什么关心它?Ineed我已经根据文件/文件夹结构编写了一个自定义站点地图提供程序.它提取根目录的文件/文件夹列表"~",替换根目录部分,Server.MapPath("~")以生成.aspx用于ASP.NET Menu控件的文件的URL .我认为以下代码解释了我在做什么:
string mainRoot = HttpContext.Current.Server.MapPath("~");
DirectoryInfo di = new DirectoryInfo(mainRoot);
//added to solve this problem with Server.MapPath
if (!mainRoot.EndsWith(@"\"))
mainRoot += @"\";
FileInfo[] files = di.GetFiles("*.aspx");
foreach (FileInfo item in files)
{
string path = item.FullName.Replace(mainRoot, "~/").Replace(@"\", "/");
//do more here
}
Run Code Online (Sandbox Code Playgroud) 我需要使用 Server.MapPath。由于库项目没有 Startup.cs,我无法应用正常的方式。
我有一个网站,使用引导程序和引导程序主题。当网站用户触发某些操作时,我的网站还会向他们发送通知电子邮件。
我希望发送的通知电子邮件的正文是格式良好的 HTML 内容,具有与主网站相同的外观和感觉。
我一直被教导要编写 DRY 代码,并使事情尽可能可维护,所以我想包含我的网站用作电子邮件中嵌入文件的相同引导 CSS,并让 HTML 正文引用该 CSS,所以如果我决定更改网站的主题,它会自动重新设置我的通知电子邮件的样式。
我用来System.Net.Mail.SmtpClient发送电子邮件,并使用 AlternateViews 添加内容。我不想在我的网站的 CSS 中包含实时引用,以防电子邮件被离线查看,所以我想嵌入 CSS。
我一直不知道如何将 CSS 文件读入字符串,并将其附加到电子邮件中。在我的 BundleConfig 中,我有这个:
bundles.Add(new StyleBundle("~/Content/css").Include(
"~/Content/bootstrap-sandstone.css",
"~/Content/site.css"));
Run Code Online (Sandbox Code Playgroud)
所以我尝试:
var css = File.ReadAllText(HttpContext.Current.Server.MapPath("~/Content/css"));
Run Code Online (Sandbox Code Playgroud)
但正如我想象的那样,它抛出了 FileNotFound 异常。
我可以使用什么来让我传入~/Content/css和传出弹出CSS?
我将system.web导入到我的类lib项目中.
试图找到:
system.web.httpserverutility.server.mappath
但我不知道intellisense的方法?
它是.net 2.0版本.
我有一个asp.net网站,其中包含以下目录:
C:\用户\桌面\测试的\ src \网站
我有另一个名为"files"的文件夹,它位于:
C:\Users\Desktop\Testing\src\files
Run Code Online (Sandbox Code Playgroud)
从我的项目内部我试图从"文件"文件夹中读取文件,我这样做:
var path = HttpContext.Current.Server.MapPath("/files");
Run Code Online (Sandbox Code Playgroud)
我也尝试过:
var path = HttpContext.Current.Server.MapPath("..");
Run Code Online (Sandbox Code Playgroud)
但它说 Failed to map the path '/files'.
这可能是什么原因?它可以用我的IIS做点什么吗?我怎么能让这个工作?
谢谢!
我在Asp.Net C#中使用Quartz.Net来安排我的任务.我想写一个文件,当我尝试没有MapPath它按预期写入文件(Hello world).
这是我写的代码.我曾尝试HostingEnvironment.MapPath和Server.MapPath.它只是在没有任何内容的情况下编写文件.
public void Execute(IJobExecutionContext context)
{
StreamWriter file = new StreamWriter("destination_actualPath\\hello1.txt", true);
file.WriteLine("Hello world " + Server.MapPath("../Data"));
file.Close();
}
Run Code Online (Sandbox Code Playgroud)
是的,此文件夹Data确实存在于我的项目目录中.这个函数在IJob类中.如果我写一个新方法(除了执行)它正在写入文件(hello world和path),如果它在这个Execute方法中,它就不会写任何内容到文件中.
我正在尝试将我的错误写入MapPath中的文本文件中.但我有一个问题是:
path = Server.MapPath("~/emails.txt");
Run Code Online (Sandbox Code Playgroud)
实际上Server是在System.Web.UI.Page命名空间中我想在我的cs文件中使用它没有aspx文件...我的意思是它是AppCode中的CodeFile; 如何从cs CodeFile写入文件?