首页 文章

配置IIS Express以对VS2010项目进行外部访问

提问于
浏览
101

我正在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 回答

  • 13

    1 编辑applicationhost.config文件(位于文档中的IISExpress文件夹中)后,您的站点绑定应如下所示:

    <bindings>
      <binding protocol="http" bindingInformation="*:8080:*" />
    </bindings>
    

    绑定包括三个部分 . 首先是IP地址或列表,或者在本例中是通配符 . 其次是端口号,第三是主机名,列表或通配符(用于按 Host 标头过滤) . 出于开发目的,通配符最适合此处,因为您可能会使用唯一的端口 .

    2 因为您使用的是非localhost绑定,所以需要其他权限 . 您可以以管理员身份运行VS,或者最好您应该add URL ACLs授予所需的权限 . 在下面的示例中,每个人都有权限,但您可以使用自己的用户名 .

    Note: urlacl 必须与绑定完全匹配 . 因此_855337_的 urlacl 将允许 *:8080:* 的绑定,但不允许绑定 *:8080:localhost ,即使后者是前者的子集 . 这意味着如果您在 applicationhost.config 中列出主机 Headers 而不是使用通配符,则必须为每个 Headers 添加匹配的 urlacl .

    为外部流量配置HTTP.sys的步骤与设置站点以使用保留端口类似 . 在Windows 7或Windows Vista上,从提升的命令提示符处运行以下命令:netsh http add urlacl url = http:// *:8080 / user = DOMAIN \ username在Windows XP上,从提升的命令提示符运行以下命令:httpcfg set urlacl / u http:// *:8080 //一个D :( A ;; GX ;;; WD)

    Note 2 如果以管理员身份运行VS或添加ACL条目无法解决问题,请从命令行运行IIS Express并检查是否存在任何绑定注册失败消息 . 要从命令行开始,请提供以下命令:

    iisexpress.exe /site:"your-site-name"
    

    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"

  • -2

    我也在这个问题上花了好几个小时,试图从我的Android Xoom浏览我的win7开发机器,所以我可以测试一个我创建的新的asp.net网络应用程序 . 我所做的就是将IISExpress的applicationhost.config从使用PC HostName更改为PC的当前IP地址,用于我的新站点 .

    <binding protocol="http" bindingInformation="*:80:dev-Lee" />
    

    <binding protocol="http" bindingInformation="*:80:192.168.1.102" />
    

    一旦我这样做并重新启动IISExpress ...我能够浏览到我的dev-Lee机器并从我的Xoom看到我的应用程序!

  • 2

    我们可以通过编辑IIS Express的applicationhost.config来添加多个绑定地址

    <bindings>
       <binding protocol="http" bindingInformation="*:62217:localhost" />
       <binding protocol="http" bindingInformation="*:62217:192.168.0.5" />
       <binding protocol="http" bindingInformation="*:62218:192.168.0.5" />
    </bindings>
    

    现在我们可以使用IP地址从lan访问网站 .

    Accessing local sites from Lan using IIS Express

  • 0

    Visual Studio 2013 SP1及更高版本(2015)包括“将服务器设置应用于所有用户(存储在项目文件中)”设置 . 默认情况下启用此功能 . 启用时,Visual Studio将使用命令行参数启动IIS Express,以使其使用不同的配置文件 . 'applicationhost.config'文件的位置位于'.vs \ config'中的项目目录下 .

  • 6

    我们制作了一个名为Conveyor的免费VS(2012,2013,2015)扩展程序,允许这样做 - 你可以通过VS中的Tools-> Extensions ...菜单或在gallery网站上找到它https://visualstudiogallery.msdn.microsoft.com/a429dbb7-a982-4541-b401-934375c02c0f?SRC=Home

  • 1

    如果您正在使用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文件!

  • -3

    从visual studio 2012开始工作我遇到了很多麻烦,我从404错误变为503错误 . 最终对我有用的是消灭IIS Express配置中的所有相关配置...

    "\Program Files (x86)\IIS Express\appcmd.exe" list site
    "\Program Files (x86)\IIS Express\appcmd.exe" delete site xxx
    "\Program Files (x86)\IIS Express\appcmd.exe" delete site yyy
    

    然后我在VS中的Web项目的属性页面中创建了一个新的虚拟目录,但在创建虚拟目录之前,我将主机名更改为http://myhost:80/,然后点击创建虚拟目录按钮 . 以前我一直在收到错误,说主机名必须是'localhost',但这次没有 . 之后,它奏效了 .

    简而言之,首先清除现有配置并重新开始 .

  • 133

    如果你的外部域是“name.mydyndns.com”,那么你需要写:

    <binding protocol="http" bindingInformation="*:name.mydyndns.com" />
    

    这适用于Windows 2003 Server和IIS 7.5 Express .

  • 28

    Screenshot

    在IIS上的应用程序池中将“启用32位应用程序”设置为“true” .

相关问题