为了让一个webapp与另一台服务器上的另一个app共享文件更简单,我在母版页中使用了base href标记.正如许多人所发现的,这打破了网络表单路径.我有一个工作表单适配器类,但不确定如何获取url的绝对路径.目前,我的程序是硬编码的,使用类似于:

HttpContext Context = HttpContext.Current;
value = "http://localhost" + Context.Request.RawUrl;

值得注意的是,我目前正在本地IIS服务器上进行测试,因此我try 使用的很多东西都有一个奇怪的趋势,即绝对路径不包括域名(我的本地IIS在外部不可见).这意味着它不是一条绝对路径,因此基本href将 destruct 它.

有没有好的方法来处理这个问题,这样它就可以在没有硬编码的情况下在本地工作,但在上载到服务器时也可以正常工作?我倾向于避免任何涉及在服务器端副本上执行不同操作的事情.

是的,我知道我可以在本地和服务器上使用单独的web.config文件来获取此信息,但这很难看,而且违反了规则.

推荐答案

我过go 用过这个:

// Gets the base url in the following format: 
// "http(s)://domain(:port)/AppPath"
HttpContext.Current.Request.Url.Scheme 
    + "://"
    + HttpContext.Current.Request.Url.Authority 
    + HttpContext.Current.Request.ApplicationPath;

Asp.net相关问答推荐

如何在 ASP.NET 中以 'YYYY-MM-DD' 格式获取当前日期?

Azure 自定义控制器/API .Net 后端

ASP.NET @Register 与 @Reference

HttpResponse 的区别:SetCookie、AppendCookie、Cookies.Add

为 Web 请求实现速率限制算法的最佳方法是什么?

如何缓存数据库表以防止在 Asp.net C# mvc 中出现许多数据库查询

使用 jQuery.ajax() 时如何处理错误?

如何确定 web.config 中的编译 debug="true"

Asp.net 中的下拉列表验证使用必填字段验证器

asp.net 有控制台日志(log)吗?

如何在 ASP.NET MVC 中设置时区?

SignalR /signalr/hubs 404 未找到

如何从 ASP.NET 中的数据表/数据视图中 Select 前 n 行

无法在 IIS 中启动网站 - W3SVC 正在运行

使用 VirtualPathProvider 从 DLL 加载 ASP.NET MVC 视图

MSBuild DeployOnBuild=true 不发布

URL 路由、图像处理程序和潜在危险的 Request.Path 值

如何加密 web.config 中的一项

ConfigurationManager.AppSettings 缓存

Visual Studio 2013 ASP.NET 项目中 Antlr 包的用途是什么?