![](/img/trans.png)
[英]How to set the request timeout for one controller action on IIS and IIS Express
[英]How to enable external request in IIS Express?
现在 IIS 团队站点上有一篇博客文章解释了如何在 IIS Express 上启用远程连接。 以下是该帖子的相关部分总结:
在 Vista 和 Win7 上,从管理提示符运行以下命令:
netsh http add urlacl url=http://vaidesg:8080/ user=everyone
对于 XP,首先安装 Windows XP Service Pack 2 支持工具。 然后从管理提示符运行以下命令:
httpcfg set urlacl /u http://vaidesg1:8080/ /a D:(A;;GX;;;WD)
您可能需要进行三项更改。
.config
文件中。 通常:
$(solutionDir)\\.vs\\config\\applicationhost.config
%userprofile%\\My Documents\\IISExpress\\config\\applicationhost.config
找到您网站的绑定元素,然后添加
<binding protocol="http" bindingInformation="*:8080:*" />
netsh http add urlacl url=http://*:8080/ user=everyone
everyone
都是一个窗口组。 对带有“Tout le monde”之类的空格的组使用双引号。
允许 IIS Express 通过 Windows 防火墙。
开始 / 具有高级安全性的 Windows 防火墙 / 入站规则 / 新规则...
程序
%ProgramFiles%\\IIS Express\\iisexpress.exe
或 端口 8080 TCP
现在,当您启动iisexpress.exe
您应该会看到一条消息,例如
已成功为站点“hello world”应用程序“/”注册 URL“http://*:8080/”
直到我找到iisexpress-proxy才对我有用。
以管理员身份打开命令提示符,然后运行
npm install -g iisexpress-proxy
然后
iisexpress-proxy 51123 to 81
假设您的 Visual Studio 项目在 localhost:51123 上打开并且您想访问外部 IP 地址 xxxx:81
编辑:我目前正在使用ngrok
我记得几个月前在尝试这个工作流程时遇到了同样的问题。
这就是为什么我专门为这种场景编写了一个简单的代理实用程序: https : //github.com/icflorescu/iisexpress-proxy 。
使用IIS Express 代理,一切都变得非常简单——无需“netsh http add urlacl url=vaidesg:8080/ user=everyone”或弄乱您的“applicationhost.config”。
只需在命令提示符中发出此命令:
iisexpress-proxy 8080 to 3000
…然后您可以将远程设备指向http://vaidesg:3000 。
大多数时候,越简单越好。
如果您正在使用 Visual Studio,请按照以下步骤通过 IP 地址访问 IIS-Express:
ipconfig
去
$(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 地址
作为旁注:
netsh http add urlacl url=http://vaidesg:8080/ user=everyone
这仅适用于英语版本的 Windows。 如果您使用的是本地化版本,则必须用其他内容替换“everyone”,例如:
否则你会得到一个错误(创建 SDDL 失败,错误:1332)
一个很好的资源是 Scott Hanselman 的IISExpress 在开发时使用 SSL 更容易。
您所追求的是让 IIS Express 通过端口 80 从外部提供服务的部分
我通过在 Visual Studio Professional 2015 中安装“Conveyor by Keyoti”解决了这个问题。Conveyor 使用启用外部请求的端口 (45455) 生成远程地址(您的 IP)。 例子:
Conveyor 允许您从网络上的外部平板电脑和手机或从 Android 模拟器(没有http://10.0.2.2:<hostport>
)测试 Web 应用程序
步骤在以下链接中:
https://marketplace.visualstudio.com/items?itemName=vs-publisher-1448185.ConveyorbyKeyoti
如果您尝试过恐慌上校的回答但在 Visual Studio 中不起作用,请尝试以下操作:
在 IIS Express 配置中附加另一个<binding />
<bindings>
<binding protocol="http" bindingInformation="*:8080:localhost" />
<binding protocol="http" bindingInformation="*:8080:hostname" />
</bindings>
最后,您必须以管理员身份运行 Visual Studio
这就是我使用 Visual Studio 2015 为 Windows 10 所做的,以启用远程访问,包括 http 和 https:
第一步是将您的应用程序绑定到您的内部 IP 地址。 运行cmd
-> ipconfig
获取地址。 打开文件/{project folder}/.vs/config/applicationhost.config
并向下滚动,直到找到如下内容:
<site name="Project.Web" id="2">
<application path="/">
<virtualDirectory path="/" physicalPath="C:\Project\Project.Web" />
</application>
<bindings>
<binding protocol="http" bindingInformation="*:12345:localhost" />
</bindings>
</site>
在bindings
下添加两个新bindings
。 如果您愿意,也可以使用 HTTPS:
<binding protocol="http" bindingInformation="*:12345:192.168.1.15" />
<binding protocol="https" bindingInformation="*:44300:192.168.1.15" />
将以下规则添加到您的防火墙,以管理员身份打开一个新的cmd
提示符并运行以下命令:
netsh advfirewall firewall add rule name="IISExpressWeb" dir=in protocol=tcp localport=12345 profile=private remoteip=localsubnet action=allow
netsh advfirewall firewall add rule name="IISExpressWebHttps" dir=in protocol=tcp localport=44300 profile=private remoteip=localsubnet action=allow
现在以Administrator
身份启动 Visual Studio。 右键单击 web 项目项目文件并选择Properties
。 转至Web
选项卡,然后单击Create Virtual Directory
。 如果 Visual Studio 不是以管理员身份运行,这可能会失败。 现在一切正常。
我发现的最简单和最酷的方法是使用(设置需要 2 分钟):
它适用于在本地主机上运行的任何内容。 只需注册,运行很少的可执行文件,无论您在 localhost 上运行什么,都会获得可以从任何地方访问的公共 URL。
这非常适合向您的远程团队成员展示内容,无需摆弄 IIS 设置或防火墙。 想要停止访问只是终止可执行文件。
ngrok authtoken xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx
ngrok http -host-header=localhost 89230
假设 89230 是您的 IIS Express 端口
即使在免费计划中,您也可以运行多个端口
结合此线程中的答案,这就是我修复它的方式(Visual Studio 2019):
以管理员身份启动 Visual Studio 并像往常一样运行 Web 服务。
在任务栏上找到 IIS Express 图标,右键单击它,然后单击“显示所有应用程序”。
选择您的 Web 服务并注意下面显示的配置路径。 单击配置文件以打开它进行编辑。
在此配置文件中找到您的 Web 服务(例如搜索您的端口),然后找到如下一行: *
: yourport :localhost
之后添加一个新行,如下所示:
:
港口: *
在这种情况下,无需创建具有特定 ip 地址的绑定,这些地址将来可能会更改。
我希望这可以帮助那里的人。
您可以尝试设置端口转发,而不是尝试修改 IIS Express 配置、添加新的 HTTP.sys 规则或以管理员身份运行 Visual Studio。
基本上,您需要将您的网站运行的IP:PORT
转发到您机器上的其他一些空闲端口,但在外部网络适配器上,而不是本地主机上。
问题是 IIS Express(至少在 Windows 10 上)绑定到[::1]:port
意味着它侦听 IPv6 端口。 您需要考虑到这一点。
这是我如何完成这项工作 - http://programmingflow.com/2017/02/25/iis-express-on-external-ip.html
希望能帮助到你。
这个问题的公认答案是让 IIS Express 与 webmatrix 一起工作的指南。 当我试图让它与 VS 2010 一起工作时,我发现本指南更有用。
我只是按照第 3 步和第 4 步(以管理员身份运行 IIS Express),不得不暂时禁用我的防火墙以使其正常工作。
我在 Win 8.1 和外部请求中使用 IIS Express 时遇到一些问题。
我按照以下步骤调试外部请求:
它正在工作!
我启用了本地 IIS,所以我只是为我的调试端口创建了一个重写规则...我认为这比其他方法更好更酷,因为一旦完成开发它更容易删除...这是重写的外观。 .
<rewrite>
<rules>
<rule name="ReverseProxyInboundRule1" stopProcessing="true">
<match url="^dev/(.*)" />
<action type="Rewrite" url="http://localhost:47039/{R:1}" />
</rule>
</rules>
</rewrite>
VS 还允许您直接使用本地 IIS 进行开发(然后允许远程连接),但反过来您必须始终以管理员身份运行它......我不喜欢那样。
如果您从 Admin 运行 Visual Studio,则只需添加
<binding protocol="http" bindingInformation="*:8080:*" />
或者
<binding protocol="https" bindingInformation="*:8443:*" />
进入
%userprofile%\My Documents\IISExpress\config\applicationhost.config
我通过使用反向代理方法解决了这个问题。
我安装了 wamp 服务器并使用了 apache web 服务器的简单反向代理功能。
我添加了一个新端口来侦听 Apache Web 服务器 (8081)。 然后我添加了代理配置作为该端口的虚拟主机。
<VirtualHost *:8081>
ProxyPass / http://localhost:46935/
ProxyPassReverse / http://localhost:46935/
</VirtualHost>
对我来说,使用这个,相对简单,直接:
通过在“扩展”对话框中搜索“Conveyor”来下载Visual Studio 扩展。 然后只需安装。
表格: https : //marketplace.visualstudio.com/items?itemName=vs-publisher-1448185.ConveyorbyKeyoti
我无法向本地网络中的其他用户提供 iis 请求,我所要做的(除了上述之外)就是重新启动我的 BT Hub 路由器。
这真是太棒了,甚至用漂亮的域名覆盖了 HTTPS:
http://www.hanselman.com/blog/WorkingWithSSLAtDevelopmentTimeIsEasierWithIISExpress.aspx
万一上面的链接消失了,我在其他任何地方都找不到的非常棒的部分:
> C:\Program Files (x86)\IIS Express>IisExpressAdminCmd.exe Usage:
> iisexpressadmincmd.exe <command> <parameters> Supported commands:
> setupFriendlyHostnameUrl -url:<url>
> deleteFriendlyHostnameUrl -url:<url>
> setupUrl -url:<url>
> deleteUrl -url:<url>
> setupSslUrl -url:<url> -CertHash:<value>
> setupSslUrl -url:<url> -UseSelfSigned
> deleteSslUrl -url:<url>
>
> Examples: 1) Configure "http.sys" and "hosts" file for friendly
> hostname "contoso": iisexpressadmincmd setupFriendlyHostnameUrl
> -url:http://contoso:80/ 2) Remove "http.sys" configuration and "hosts" file entry for the friendly hostname "contoso": iisexpressadmincmd
> deleteFriendlyHostnameUrl -url:http://contoso:80/
上述实用程序将为您注册 SSL 证书! 如果您使用 -UseSelfSigned 选项,则非常简单。
如果你想用困难的方式做事,不明显的部分是你需要告诉 HTTP.SYS 使用什么证书,如下所示:
netsh http add sslcert ipport=0.0.0.0:443 appid={214124cd-d05b-4309-9af9-9caa44b2b74a} certhash=YOURCERTHASHHERE
Certhash 是您可以从 MMC 中的证书属性中获得的“指纹”。
我执行了以下操作并能够连接:
1) 将 IIS express 配置绑定从本地主机更改为“*”
绑定协议="http" bindingInformation="*:8888:*"
2) 在防火墙上定义入站规则以允许协议类型的特定端口:tcp
3) 添加以下命令为您的端口添加网络配置: netsh http add urlacl url=http://*:8888/ user=everyone
在我的 do.net 核心 6 项目中帮助我允许远程访问我的 IIS 服务器的是在 [解决方案目录]/Properties/launchSettings.json 中设置项目的“applicationUrl”参数,将值从“http://localhost :5000" 到 "http://0.0.0.0:5000"
{
"iisSettings": {
"windowsAuthentication": false,
"anonymousAuthentication": true,
"iisExpress": {
"applicationUrl": "http://localhost:20845",
"sslPort": 0
}
},
"profiles": {
"IIS Express": {
"commandName": "IISExpress",
"launchBrowser": true,
"environmentVariables": {
"ASPNETCORE_ENVIRONMENT": "Development"
}
},
"MyLittleProject": {
"commandName": "Project",
"dotnetRunMessages": "true",
"launchBrowser": true,
"applicationUrl": "http://0.0.0.0:5000",
"environmentVariables": {
"ASPNETCORE_ENVIRONMENT": "Development"
}
}
}
}
但正确设置防火墙以允许访问服务器的 TCP 端口也很重要:在我的例子中,添加了 TCP 端口 5000 的入站规则以允许连接。
[项目属性对话框]
对于使用 VisualStudio 2017 和 NetCore API 项目的开发:
1) 在 Cmd-Box: ipconfig /all 确定 IP 地址
2a) 在项目属性-> 调试选项卡中输入检索到的 IP 地址
2b) 选择一个端口并将其附加到步骤 2a 中的 IP 地址。
3) 在防火墙中添加允许规则以允许选定端口上的传入 TCP 流量(我的防火墙通过对话框触发:“阻止或向防火墙添加规则”)。 在这种情况下,添加会起作用。
上述解决方案的缺点:
1) 如果您使用动态 IP 地址,则需要重做上述步骤,以防分配了另一个 IP 地址。
2) 你的服务器现在有一个你可能会忘记的开放端口,但这个开放端口仍然是对不速之客的邀请。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.