【发布时间】:2011-07-15 10:35:09
【问题描述】:
假设我的 ASP.NET Web 应用程序位于本地和远程服务器上名为“MyApp”的目录中。我正在尝试构建对链接的 onclick 响应。响应调用 Javascript 函数,将我的 Web 应用程序中的 .aspx 页面的 URL 传递给它。 Javascript 会弹出一个显示页面的新窗口。我的 C# 代码如下所示:
link = new HyperLink();
link.Text = product_num_str;
link.NavigateUrl = "#";
string url = "Javascript:My_NewWindow('http://" +
HttpContext.Current.Request.Url.Authority +
"/ProductInfo.aspx?_num=" + product_num_str + "')";
link.Attributes.Add("onclick", url);
我开始使用请求的权限属性是因为我在使用 Host 属性时在 Visual Studio Web 服务器上本地运行时遇到问题。问题是 Host 只返回“localhost”而不是主机和端口号。
在本地测试时,代码有效,因为“权限”映射到我的应用根文件夹。生成的 URL 是,例如,
http://localhost:52071/ProductInfo.aspx?_num=123
但是,如果我在远程服务器上运行,我最终会得到如下结果:
http://company-server/ProductInfo.aspx?_num=123
这找不到页面,因为在这种情况下必须包含“MyApp”根文件夹。
可能有一种更简单的方法 - 在 web.config 或其他内容中添加一个条目。我最初的动机是允许将应用程序发布到任何名称的文件夹并按原样工作。
我可以破解我的方法并在字符串中搜索“localhost”之类的东西,但这很难看。那么如何构建一个在任何地方都可以使用的字符串呢?
【问题讨论】: