1. 程式人生 > >[C# ASP.NET]如何讓IIS Express支援外部(區域網)連線

[C# ASP.NET]如何讓IIS Express支援外部(區域網)連線

宣告:本文為www.cnc6.cn原創,轉載時請註明出處,謝謝!

一、搭建環境:

1、系統:Win10 1809

2、IDE:Visual Studio 2017 

3、Framework: 4.6.1

4、語言:C# (ASP.NET MVC)

二、新建一個MVC網站,開啟Visual Studio(筆者這裡使用的是Visual Studio 2017),使用MVC模板按照預設專案名稱新建一個WebApplication(筆者這裡使用的是WebApplication1),如下圖所示:

三、開啟本專案的IIS配置檔案,位置位於:"C:\Users\{計算機使用者名稱}\source\repos\{專案名稱}\.vs\config\applicationhost.config",

筆者這裡的位置是:"C:\Users\CNC\source\repos\WebApplication1\.vs\config\applicationhost.config",這裡以筆者的為準,其他的專案大同小異,以下不再作說明;

我們導航到<sites>節點,內容如下:

        <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。

四、將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。

五、為非管理員使用者和帳戶保留指定的URL,請以管理員模式開啟命令提示符,輸入以下資訊:

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

完成之後,會顯示以下資訊:

六、使用iisexpres開啟所建立的網站(WebApplication),請在控制檯輸入以下命令:

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

成功開啟後會顯示以下資訊:

七、如果區域網內不能訪問類似:http://192.168.0.8:63684 網站,請關閉防火牆,因為63684埠未配置為防火牆規則。

八、最終的執行效果如下: