7

我即将编写一个 JSON 网络服务(VS Express 2012 - ASP.NET WEB API),现在我想通过尝试从我的 Android 应用程序获取数据来测试它。所以我试图通过这样做使我的服务可用于本地网络:

-> 从更改localhost192.168.1.52applicationhost.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>

-> 并且还更改了 Project-properties -> Web -> "Use local IIS-Webserver" -> project-url tohttp://192.168.1.52:61802/

但是当我现在尝试启动服务时,它给了我一个错误消息框:

IIS-Express-webserver 无法启动(从德语翻译)

不幸的是,我看不到确切的错误是什么,因为 VS 输出为空

任何人都知道如何解决这个问题或如何正确设置它?

4

3 回答 3

7

IIS Express by default does not allow "remote" connections... this post shows you what to do:

IIS Express enable external request

Once you do that, you should be able to connect from ANY other computer in your network.

Also, make sure to open the port in your Firewall.

If that does not work, I would create a site using your local IIS and testing your service that way.

Hope it helps, Daniel.

于 2013-09-06T15:10:14.983 回答
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 进行依赖注入,这很好地结合了这一点,请参阅此处的指南。

现在运行控制台项目(设置为启动项目或右键单击>调试>启动新实例)。

于 2013-09-06T21:15:38.180 回答
1

嗨,请从 ApplicationHost.config 中删除 IP 名称。

创建一个虚拟目录并发布 Web 服务文件。

设置 IP 地址: - 右键单击​​“默认网站” - 编辑绑定 - 分配 IP 地址

重新启动 IIS。

浏览“默认网站”,它将与您的 IP 地址一起显示。

于 2013-09-06T15:17:02.763 回答