[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、最終的運行效果以下:

相關文章
相關標籤/搜索