我即将编写JSON-web-service(VS Express 2012 - ASP.NET WEB API),现在我想通过尝试从我的Android应用程序获取数据来测试它。所以我尝试通过这样做来为本地网络提供服务:
- >已在localhost
192.168.1.52
更改为applicationhost.config
<site name="MyFirstWebApi" id="5">
<application path="/" applicationPool="Clr4IntegratedAppPool">
<virtualDirectory path="/" physicalPath="c:\projects\MyFirstWebApi" />
</application>
<bindings>
<binding protocol="http" bindingInformation="*:61802:192.168.1.52" />
</bindings>
</site>
- &GT;并且还更改了项目属性 - &gt;网络 - &gt; “使用本地IIS-Webserver” - &gt; project-url to http://192.168.1.52:61802/
但是当我现在尝试启动该服务时,它会给我一个错误消息框:
不幸的是,我看不出确切的错误是什么,因为VS输出是空的无法启动IIS-Express-webserver (翻译自德语)
任何人都知道如何解决这个问题或如何正确设置?
答案 0 :(得分:5)
IIS Express默认情况下不允许“远程”连接......这篇文章告诉你该怎么做:
IIS Express enable external request
完成此操作后,您应该可以从网络中的任何其他计算机进行连接。
此外,请务必打开防火墙中的端口。
如果这不起作用,我会使用您的本地IIS创建一个站点并以这种方式测试您的服务。
希望它有所帮助, 丹尼尔。
答案 1 :(得分:3)
您可以运行脚本以使IIS Express允许远程连接,但另一种选择是在本地测试时为您的Web api代码使用自主机包装器。我们遇到了同样的问题,并开始使用这种方法。这是你如何做到的:
创建一个新的控制台项目并添加如下代码:
private static void Main()
{
var config = new HttpSelfHostConfiguration(new Uri("http://localhost:8086"));
// remove all formatters and only provide json
config.Formatters.Clear();
config.Formatters.Add(new JsonMediaTypeFormatter());
// if needed
SetupLogging();
SetupDependencyInjection(config);
// required for the new Attribute Routing (if you are using it)
config.MapHttpAttributeRoutes();
using (var server = new HttpSelfHostServer(config))
{
server.OpenAsync().Wait();
Console.WriteLine("Self Host Server listening on port 8086 ...");
Console.WriteLine("(You might need administrator privileges)");
Console.WriteLine("Press Enter to quit.");
Console.ReadLine();
}
}
如上所述,请运行具有管理员权限的Visual Studio。
我们正在使用AutoFac进行依赖注入,这很好地与此相关,请参阅指南here。
现在运行控制台项目(设置为启动项目或右键单击&gt; debug&gt;启动新实例)。
答案 2 :(得分:1)
嗨请从ApplicationHost.config中删除IP名称。
创建虚拟目录并发布Web服务文件。
设置IP地址: - 右键单击“默认网站” - 编辑绑定 - 分配IP地址
重新启动IIS。
浏览“默认网站”它将显示您的IP地址。