我正在VS2010中开发一个项目,并且能够通过IIS Express在本地查看我的站点 . 我想通过网络启用外部访问 .
我的所有研究都发送给我这篇博客文章:http://blogs.iis.net/vaidyg/archive/2010/07/29/serving-external-traffic-with-webmatrix-beta.aspx,这很有帮助,但似乎没有显示如何为在visual studio中启动的项目配置绑定(我在屏幕截图中找不到屏幕,并且我已编辑了绑定信息applicationhost.config,但是当我从visual studio运行该站点时似乎没有反映出来 .
9 回答
1 编辑applicationhost.config文件(位于文档中的IISExpress文件夹中)后,您的站点绑定应如下所示:
绑定包括三个部分 . 首先是IP地址或列表,或者在本例中是通配符 . 其次是端口号,第三是主机名,列表或通配符(用于按
Host
标头过滤) . 出于开发目的,通配符最适合此处,因为您可能会使用唯一的端口 .2 因为您使用的是非localhost绑定,所以需要其他权限 . 您可以以管理员身份运行VS,或者最好您应该add URL ACLs授予所需的权限 . 在下面的示例中,每个人都有权限,但您可以使用自己的用户名 .
Note:
urlacl
必须与绑定完全匹配 . 因此_855337_的urlacl
将允许*:8080:*
的绑定,但不允许绑定*:8080:localhost
,即使后者是前者的子集 . 这意味着如果您在applicationhost.config
中列出主机 Headers 而不是使用通配符,则必须为每个 Headers 添加匹配的urlacl
.Note 2 如果以管理员身份运行VS或添加ACL条目无法解决问题,请从命令行运行IIS Express并检查是否存在任何绑定注册失败消息 . 要从命令行开始,请提供以下命令:
3 最后,您需要适当的防火墙条目 . 为此,最简单的方法是使用"Windows Firewall with Advanced Security"控制台 .
在“入站规则”下,选择“新规则...” .
规则类型为"Custom" .
程序是服务 - >自定义...->仅适用于服务 . (虽然IIS Express不是服务,但它使用的HTTP多路复用器是) .
协议是TCP
特定端口:列出所有IIS Express绑定的所有端口 . 您可以随时返回此规则并添加端口 . (如果这变得很烦人,您可以添加一个范围,例如
40000-65534
,它涵盖了Visual Studio使用的整个范围,但要注意这不太安全) .行动是"Allow the connection"
Profiles 将是以下之一 . 如有疑问,请选择"Domain + private" .
"Domain",如果您是企业桌面,并且只在本地域上运行
"Domain + Private"如果您的公司是非公司环境中的私人开发机器,或者是在家中工作时也需要工作的公司笔记本电脑 .
"Domain, Private and Public",如果您需要在非专用网络上进行演示 .
名称应该像"IIS Express Dev Server"
我也在这个问题上花了好几个小时,试图从我的Android Xoom浏览我的win7开发机器,所以我可以测试一个我创建的新的asp.net网络应用程序 . 我所做的就是将IISExpress的applicationhost.config从使用PC HostName更改为PC的当前IP地址,用于我的新站点 .
至
一旦我这样做并重新启动IISExpress ...我能够浏览到我的dev-Lee机器并从我的Xoom看到我的应用程序!
我们可以通过编辑IIS Express的applicationhost.config来添加多个绑定地址
现在我们可以使用IP地址从lan访问网站 .
Accessing local sites from Lan using IIS Express
Visual Studio 2013 SP1及更高版本(2015)包括“将服务器设置应用于所有用户(存储在项目文件中)”设置 . 默认情况下启用此功能 . 启用时,Visual Studio将使用命令行参数启动IIS Express,以使其使用不同的配置文件 . 'applicationhost.config'文件的位置位于'.vs \ config'中的项目目录下 .
我们制作了一个名为Conveyor的免费VS(2012,2013,2015)扩展程序,允许这样做 - 你可以通过VS中的Tools-> Extensions ...菜单或在gallery网站上找到它https://visualstudiogallery.msdn.microsoft.com/a429dbb7-a982-4541-b401-934375c02c0f?SRC=Home
如果您正在使用Visual Studio,请按照以下步骤访问IP-Adress上的IIS-Express:
在Windows命令行中获取主机IP地址:
ipconfig
GoTo $(SolutionDir).vs \ config \ applicationHost.config
查找
<site name="WebApplication3" id="2"> <application path="/" applicationPool="Clr4IntegratedAppPool"> <virtualDirectory path="/" physicalPath="C:\Users\user.name\Source\Repos\protoype-one\WebApplication3" /> </application> <bindings> <binding protocol="http" bindingInformation="*:62549:localhost" /> </bindings> </site>
添加:
<binding protocol="http" bindingInformation="*:62549:192.168.178.108"/>
与你的IP地址
运行Visual Studio管理员权限和一切都应该工作
如果您尝试从远程连接,可能会查找一些防火墙问题
线索是,Visual Studio得到了自己的applicationHost.config文件!
从visual studio 2012开始工作我遇到了很多麻烦,我从404错误变为503错误 . 最终对我有用的是消灭IIS Express配置中的所有相关配置...
然后我在VS中的Web项目的属性页面中创建了一个新的虚拟目录,但在创建虚拟目录之前,我将主机名更改为http://myhost:80/,然后点击创建虚拟目录按钮 . 以前我一直在收到错误,说主机名必须是'localhost',但这次没有 . 之后,它奏效了 .
简而言之,首先清除现有配置并重新开始 .
如果你的外部域是“name.mydyndns.com”,那么你需要写:
这适用于Windows 2003 Server和IIS 7.5 Express .
在IIS上的应用程序池中将“启用32位应用程序”设置为“true” .