Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/tensorflow/5.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Asp.net URL中的端口_Asp.net_Url - Fatal编程技术网

Asp.net URL中的端口

Asp.net URL中的端口,asp.net,url,Asp.net,Url,我有一个web应用程序,可以部署到像这样的几个应用程序中- 有很多链接可以弹出打开的窗口。在过去,我使用以下方法来确定要弹出的窗口的url string appPath = this.Request.ApplicationPath; if ( !appPath.EndsWith ( "/" ) ) appPath += "/"; string sURL = this.Request.Url.Scheme + "://" + this.Request.Ur

我有一个web应用程序,可以部署到像这样的几个应用程序中-

有很多链接可以弹出打开的窗口。在过去,我使用以下方法来确定要弹出的窗口的url

string appPath = this.Request.ApplicationPath;
      if ( !appPath.EndsWith ( "/" ) )
        appPath += "/";
      string sURL = this.Request.Url.Scheme + "://" + this.Request.Url.Authority
        + appPath 
然后我只是在我想这样打开的窗口页面的路径上附加

appPath += "somefolder/window.aspx"
我们的一个装置刚刚移动到一个非标准端口,大约20055

因此,我一直在胡闹,想出了一种干净的、完全可靠的方法来确保端口插入到路径中,但是由于webapp映射到而不是仅仅映射到,我没有看到一种干净的方法使用请求服务器变量来实现这一点。当然,我可以使用拆分或其他方法进行黑客攻击和斜杠,或者将基本web路径存储在一个被读取的配置文件中。只是想知道是否有人有一个干净的方法来做这件事。假设我错过了一些明显的东西,所以我想我应该把最好的和最聪明的放在上面


谢谢你的帮助,我知道时间很宝贵。非常感谢。

我现在没有访问ASP服务器或Visual Studio的权限来获取详细信息,但我知道您可以从Request.URL对象获取域名及其URL路径。快速搜索告诉我它是Request.Url.Host来获取internaldomain.com部分

.Replace(".com", ".com:20055")
因此,您只需将端口附加到该端口,并将其组合在一起

所以,它应该是这样的

方案+“://”+主机+“:“+端口/”+当前路径+“/”+应用路径


正如我所说,现在无法检查细节,但我知道请求对象将允许您访问所有这些部分。如果要从一个端口到另一个端口,您可能必须将端口存储在某个位置。

您在一个不到80的端口上通过http提供html,抛开陈词滥调,您做得不对。他遵循规范,我只是不喜欢生产系统在非标准端口上通过http提供纯html。这是一种观点,但我打赌这是一种足够普遍的观点,可以称之为最佳实践。哈。是的,我可以这样做,但内部域名并不总是以.com结尾,否则我会在一瞬间完成+1为了简单起见,如果我告诉你的话,这是可行的。嗯,你可以使用正则表达式来阻止域的结束。:)有一个正则表达式,你知道的!我认为你在正确的轨道上。我在stack overflow中找到了答案,我使用了MartinHN的解决方案(大约在页面的一半)。我不认为它会起作用,但它确实起作用了。