有什么区别Server.MapPath()和HostingEnvironment.MapPath()?是否Server.MapPath()有任何优势了HostingEnvironment.MapPath()?
我原来的问题是当服务器上的文件路径HttpContext不存在时映射,我无法将Server变量传递Global.asax给我的方法.
我用HostingEnvironment.MapPath()它代替,因为它不需要HttpContext.有这两种方法会产生不同结果的情况吗?
所以我有一个Web项目,我正在尝试使用c#方法获取网站的根目录Directory.GetCurrentDirectory().我不想使用静态路径,因为文件位置将来会发生变化.这个方法在我的imageProcess.aspx.cs文件中运行,但我认为它会返回:
C:\Users\tcbl\documents\visual studio 2010\Projects\ModelMonitoring\ModelMonitoring\imageProcess.aspx.cs
Run Code Online (Sandbox Code Playgroud)
我反而得到:
C:\Program Files\Common Files\Microsoft Shared\DevServer\10.0\
Run Code Online (Sandbox Code Playgroud)
任何人都可以解释为什么会发生这种情况以及可能的解决方案是什么?非常感谢.
我有一个指向dir的绝对本地路径: "file:\\C:\\Users\\john\\documents\\visual studio 2010\\Projects\\proj"
但是当我试图将它扔进DirectoryInfo我的ctor时,我得到了"不支持URI格式"的例外.
我用Google搜索并查看了SO,但我只看到了远程路径的解决方案,而不是本地解决方案.我期待某种转换方法......
我真的很惊讶,没有本地.NET方法从相对URL获取绝对URL.我知道这已经讨论了很多次,但从来没有遇到过一个能很好地处理这个问题的令人满意的方法.你能帮助微调下面的方法吗?
我认为我需要的只是自动选择协议而不是硬编码(http/https).我还缺少什么(警告,表演等)?
public static string GetAbsoluteUrl(string url)
{
//VALIDATE INPUT FOR ALREADY ABSOLUTE URL
if (url.StartsWith("http://", StringComparison.OrdinalIgnoreCase)
|| url.StartsWith("https://", StringComparison.OrdinalIgnoreCase))
{
return url;
}
//GET PAGE REFERENCE FOR CONTEXT PROCESSING
Page page = HttpContext.Current.Handler as Page;
//RESOLVE PATH FOR APPLICATION BEFORE PROCESSING
if (url.StartsWith("~/"))
{
url = page.ResolveUrl(url);
}
//BUILD AND RETURN ABSOLUTE URL
return "http://" + page.Request.ServerVariables["SERVER_NAME"] + "/"
+ url.TrimStart('/');
}
Run Code Online (Sandbox Code Playgroud) 我无法使用Application_Start中的当前物理路径
HttpContext.Current.Request.PhysicalApplicationPath
Run Code Online (Sandbox Code Playgroud)
因为那时没有Request对象.
我怎样才能获得物理路径?
我正在开发一个应用程序.该应用程序应该从用户那里获得简历,因此我需要一个代码来验证文件是否存在.
我正在使用ASP.NET/C#.
我在一些代码中有这行我想复制到我的控制器,但编译器抱怨
"服务器"名称在当前上下文中不存在
var UploadPath = Server.MapPath("~/App_Data/uploads")
Run Code Online (Sandbox Code Playgroud)
如何在ASP.NET Core中实现等效?
net/C#应用程序我有项目列表.
在后面的代码中:我想为我的本地资源分配每个项目的图片.项目名称和图片名称相同.这些图片都在我项目的"图像"文件夹中.
我如何将图片分配给项目的示例:
Item1.PictureUrl = "images/items/" + item1.Name + ".jpg";
Run Code Online (Sandbox Code Playgroud)
我有没有照片的物品.我想为他们分配一张默认图片.
我尝试使用以下方法检查图片是否存在:
foreach(ObjectItem item in ListOfItems)
{
if(File.Exists("images/items/"+item.Name+".jpg"))
item.PictureUrl = "images/items/"+item.Name+".jpg";
else
item.PictureUrl= "images/Default.jpp";
}
Run Code Online (Sandbox Code Playgroud)
但是File.Exists方法总是返回false,即使图片存在也是如此.我也尝试使用'\'而不是'/'但是没有用
我该怎么做?
感谢您的任何帮助
我试图通过ASP.NET从服务器获取文件列表.我有这个代码,它从我的计算机上的文件夹中获取文件列表,现在我要做的是从实际服务器获取文件,我已经搜索过这个,但发现一切都非常复杂.如果有人可以帮助我或指出我想要做的方向,那将是伟大的.
using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using System.Web.Mvc;
using System.IO;
using FTPProject.Models;
namespace FTPProject.Controllers
{
public class HomeController : Controller
{
public ActionResult Index()
{
ViewBag.Title = "Home Page";
var uploadedFiles = new List<UploadedFile>();
var files = Directory.GetFiles(Server.MapPath("~/UploadedFiles"));
foreach (var file in files)
{
var fileInfo = new FileInfo(file);
var uploadedFile = new UploadedFile() { Name = Path.GetFileName(file) };
uploadedFile.Size = fileInfo.Length;
uploadedFile.Path = ("~/UploadedFiles/") + Path.GetFileName(file);
uploadedFiles.Add(uploadedFile);
}
return View(uploadedFiles);
}
}
}
Run Code Online (Sandbox Code Playgroud)
UPDATE
我尝试过以下方法:
在我的Web.Config中: …
asp.net ×9
c# ×9
.net ×3
asp.net-mvc ×2
file-exists ×2
.net-3.5 ×1
.net-4.0 ×1
asp.net-core ×1
directory ×1
filepath ×1