无法在本地网络中访问asp.net网站
我遇到的问题是无法在本地网络中访问一个asp.net网站。原因是我之前并不知道需要安装和配置IIS Web服务器。我以为在Visual Studio中本地的IIS服务器会满足我在内外网访问网站的需求。
解决方法如下:
- 我按照这个教程(在Windows 7上安装IIS)来安装IIS服务器。
- 然后我从Visual Studio中发布了网站(我观看了这个视频)。
- 我发现我可以通过
http://localhost/home/index
访问网站,但是无法通过http://192.168.1.x/home/index
访问。
我发现需要配置主机头。这个SO问题和这个链接帮助我解决了这个问题。
- 但是我仍然无法使用本地IP地址访问网站,即使在IIS管理器中分配了一个新的端口也无法启动网站。我重启了电脑,然后在Visual Studio中打开项目时遇到了这个消息 - "The url is configured to use iis express as the web server but the url is currently configured on the local iis server"。所以,我按照这个问题禁用了Visual Studio中的本地IIS服务器。
- 在再次尝试在Visual Studio中打开项目时,出现了这个消息 - "asp.net 4.5 has not been registered on the web server. you need to manually configure"。我按照这个SO问题和这个网站来解决这个问题。我运行了下面的命令:
C:\Windows\Microsoft.NET\Framework\v4.0.30319>aspnet_regiis.exe -i
- 在此之后,我在IIS管理器中配置了我的网站的绑定,使用了我的本地IP地址。在这个改变后重新启动网站,我可以通过localhost、本地IP地址和外部IP地址访问网站。
问题:无法在本地网络中访问一个asp.net网站
原因:
1. 没有在IIS服务器上配置网站,只在临时的Visual Studio(模拟的iis)上配置了网站。
解决方法:在IIS管理员中配置网站,并通过浏览器使用以下URL访问网站:http://localhost/yoursite
2. 检查本地IP地址。
解决方法:在本地机器上使用IPCONFIG命令查看本地IP,然后将URL中的"localhost"替换为"your ip address",例如:http://192.168.1.15/yoursite
3. 在本地网络的同一网段的计算机上尝试相同的URL地址。
解决方法:检查Windows防火墙、ESET防火墙、其他防火墙和路由器配置,消除路由器中的IP转发。
4. 将公共IP配置到本地IP上。
解决方法:将路由器上的公共IP指向本地服务器IP,最简单的方法是配置路由器的DMZ,将所有端口转发到本地机器。例如,如果公共IP是200.105.210.190,将DMZ配置为将所有端口转发到本地IP 192.168.1.15,这样全世界就可以通过以下URL访问您的机器:http://200.105.210.190/yoursite
感谢。第一步有效,但第二步(使用IP地址)无效。我已经将applicationhost.config文件的内容添加到了我的问题中。
解决方法:您可能正在使用IIS Express而不是传统的IIS,请参考此链接(http://stackoverflow.com/questions/3313616)来启用IIS Express的外部请求。
感谢。我已经解决了这个问题。我会将解决方法发布为答案(比我想象的要复杂)。
Unable to access an asp.net website in the local network
最近,我按照Ben Scott的一篇非常棒的HOWTO文章,在独立的IIS Express实例上托管了一个网站。由于我是对外提供服务的,所以以管理员身份运行IISExpress.exe,因此不需要在访问控制列表中注册URL(感谢Trevor Elliot的回答链接,非常实用!)。
然而,尽管按照教程操作,我仍然无法在本地网络中访问这个asp.net网站。经过一番研究,我发现了问题的原因和解决方法。
原因是IIS Express默认只允许本地访问,对于局域网内的其他设备是不可见的。因此,我们需要进行一些配置来允许局域网内的设备访问。
解决方法如下:
1. 首先,打开IIS Express的配置文件,该文件位于C:\Users\[用户名]\Documents\IISExpress\config\目录下。找到applicationhost.config文件,用文本编辑器打开。
2. 在文件中找到<sites>标签,这里存储了配置信息。
3. 在<sites>标签下,找到你要访问的网站的配置节点。节点的格式一般为<site name="[网站名]" id="[网站ID]">。
4. 在该节点下,找到<bindings>标签,这是网站绑定的端口和协议信息。
5. 在<bindings>标签下,找到<binding protocol="[协议]" bindingInformation="[绑定信息]">节点。这里的协议一般为http,绑定信息一般为*:端口:localhost。
6. 在该节点中新增一个<binding protocol="[协议]" bindingInformation="[绑定信息]">节点,协议和绑定信息保持不变,只需要将localhost改为*,表示允许所有设备访问。
7. 保存文件,并重启IIS Express。
通过上述步骤,我成功解决了无法在局域网内访问asp.net网站的问题。现在,我可以在本地网络中的其他设备上访问我的网站了。
希望这篇文章对那些遇到同样问题的人有所帮助!