[C# ASP.NET]如何让IIS Express支持外部(局域网)链接

声明:本文为www.cnc6.cn原创,转载时请注明出处,谢谢!express

 

1、搭建环境:app

一、系统:Win10 1809网站

二、IDE:Visual Studio 2017 url

三、Framework: 4.6.1spa

四、语言:C# (ASP.NET MVC)命令行

2、新建一个MVC网站,打开Visual Studio(笔者这里使用的是Visual Studio 2017),使用MVC模板按照默认项目名称新建一个WebApplication(笔者这里使用的是WebApplication1),以下图所示:code

3、打开本项目的IIS配置文件,位置位于:"C:\Users\{计算机用户名}\source\repos\{项目名称}\.vs\config\applicationhost.config",orm

笔者这里的位置是:"C:\Users\CNC\source\repos\WebApplication1\.vs\config\applicationhost.config",这里以笔者的为准,其余的项目大同小异,如下再也不做说明;server

咱们导航到<sites>节点,内容以下:blog

        <sites>
            <site name="WebSite1" id="1" serverAutoStart="true">
                <application path="/">
                    <virtualDirectory path="/" physicalPath="%IIS_SITES_HOME%\WebSite1" />
                </application>
                <bindings>
                    <binding protocol="http" bindingInformation=":8080:localhost" />
                </bindings>
            </site>
            <site name="WebApplication1" id="2">
                <application path="/" applicationPool="Clr4IntegratedAppPool">
                    <virtualDirectory path="/" physicalPath="C:\Users\CNC\source\repos\WebApplication1\WebApplication1" />
                </application>
                <bindings>
                    <binding protocol="http" bindingInformation="*:63684:localhost" />
                </bindings>
            </site>
            <siteDefaults>
                <logFile logFormat="W3C" directory="%IIS_USER_HOME%\Logs" />
                <traceFailedRequestsLogging directory="%IIS_USER_HOME%\TraceLogFiles" enabled="true" maxLogFileSizeKB="1024" />
            </siteDefaults>
            <applicationDefaults applicationPool="Clr4IntegratedAppPool" />
            <virtualDirectoryDefaults allowSubDirConfig="true" />
        </sites>

找到与本项目相关的Site,咱们能够从 bindingInformation="*:63684:localhost" 看到,这里绑定的IP为localhost,端口号为63684。

咱们能够使用appcmd命令行提示符来显示以上信息:

1)将“C:\Program Files (x86)\IIS Express”(64位)或“C:\Program Files\IIS Express”(32位)加入到系统环境变量,具体怎么加入系统环境变量,能够自行百度;

2)打开命令提示符,输入如下命令:

appcmd /apphostconfig:C:\Users\CNC\source\repos\WebApplication1\.vs\config\applicationhost.config list site

接着命令提示符显示:

以上与项目的applicationhost.config文件显示一致,本项目的Site ID为2。

4、将applicationhost.config文件内<site name="WebApplication1" id="2">节点内容修改,以下(下划线所示):

修改前:

<site name="WebApplication1" id="2">
    <application path="/" applicationPool="Clr4IntegratedAppPool">
        <virtualDirectory path="/" physicalPath="C:\Users\CNC\source\repos\WebApplication1\WebApplication1" />
    </application>
    <bindings>
        <binding protocol="http" bindingInformation="*:63684:localhost" />
    </bindings>
</site>

修改后:

<site name="WebApplication1" id="2">
    <application path="/" applicationPool="Clr4IntegratedAppPool">
        <virtualDirectory path="/" physicalPath="C:\Users\CNC\source\repos\WebApplication1\WebApplication1" />
    </application>
    <bindings>
        <binding protocol="http" bindingInformation="*:63684:*" />
    </bindings>
</site>

将localhost修改成*,修改的目的是不单单能够使用localhost:63684,还能够使用任意与本机相关的IP地址,如192.168.0.8:63684。

5、为非管理员用户和账户保留指定的URL,请以管理员模式打开命令提示符,输入如下信息:

netsh http add urlacl url=http://*:63684/ user=everyone

完成以后,会显示如下信息:

6、使用iisexpres开启所建立的网站(WebApplication),请在控制台输入如下命令:

iisexpress /config:C:\Users\CNC\source\repos\WebApplication1\.vs\config\applicationhost.config /siteid:2

成功开启后会显示如下信息:

7、若是局域网内不能访问相似:http://192.168.0.8:63684 网站,请关闭防火墙,由于63684端口未配置为防火墙规则。

8、最终的运行效果以下:

相关文章
相关标签/搜索