【问题标题】:WcfWebApi in Windows Azure WebRole always returns 404, but is fine locallyWindows Azure Web 角色中的 Wcf Web Api 始终返回 404,但在本地很好
【发布时间】:2012-01-15 22:50:48
【问题描述】:

我陷入了可怕的“它在本地工作”问题。

我使用 NuGet 将 WcfWebApi 安装到 Azure WebRole。 这是一个 WebForms 网站。

Global.asax.cs Application_Start 调用 RegisterRoutes()。

RegisterRoutes() 包含:RouteTable.Routes.Add(new ServiceRoute("MySvc/TheService/", new WebServiceHostFactory(), typeof(Services.TheService)));

服务的接口包含:

[OperationContract]
    [WebGet(UriTemplate = "/hello", BodyStyle = WebMessageBodyStyle.Bare)]
    string Hello();

实现类只返回“hello”,所以如果我现在导航到:http://localhost:49831/MySvc/TheService/hello - 我会得到“hello”返回。好的。

如果我现在发布到 Azure 并尝试相同的 url(显然是 xx.cloudapp.net/ 等),我总是得到 404。

我以前使用过 WcfWebApi - 但总是在 WCfWebRole 中。这有什么不同吗?为什么它在本地工作?那一定和Azure有关?

任何建议表示赞赏。谢谢。

编辑:好吧,按照@Rajesh 的建议,我运行了Get_HostedServices,它列出了托管服务的url,例如:https://management.core.windows.net/mysubscriptionId/services/hostedservices/the-nameOfTheApp。不太清楚这是怎么回事...

我绝望地添加了一个 .svc 文件到我的 Web 应用程序的文件夹中,以及所有(可怕的)system.serviceModel 服务等等,这是 REST 样式配置所需的。这一切都有效。

我不想结束这个问题,因为它没有被回答,我很好奇发生了什么。感谢大家到目前为止的回复。如果我确实找到答案,我会更新。

【问题讨论】:

  • 以下链接提供了有关如何列出所有托管服务的一些信息:msdn.microsoft.com/en-us/library/windowsazure/ee460781.aspx
  • @Rajesh:谢谢,但我很确定这只是列出了托管的 Azure 服务。我知道 WebRole 已启动 - 我可以看到它。只是不是 WcfWebApi 路由端点,它 WebRole 托管服务中。还是谢谢
  • 当您尝试查看上述托管服务列表时,它是否不显示服务的位置。还可以尝试从 IIS 浏览到 Azure 服务器上 IE 中的服务,它应该会为您提供路径,并且您应该能够从那里找出资源的位置。
  • 这很奇怪,我在clubcaprice.com/map 上做的事情几乎相同,而且效果很好。您确定您的 web.config 中没有任何可能引发问题的内容吗?

标签: c# azure wcf-web-api


【解决方案1】:

我考虑过您的问题,您可以尝试使用 IIS 或 IIS Express 在本地运行您的应用程序吗? (IIS express 没有开箱即用,您必须安装它,但与 VS 一起使用更容易)

您提供的 url 让我认为 VS 使用 Cassini (Visual Studio Development Server) 或 IIS express。请注意,Cassini 的工作方式与 IIS 不同,而 IIS Express 则可以。您的 Azure Web 角色将在 IIS 下运行,这可以解释您遇到的不同行为。

此外,您的 url 看起来不像 Windows Azure 模拟器 url(域应该类似于 127.0.0.1:81

我想你的项目是一个 Windows azure 项目。测试时,您确定要启动 Azure 项目而不是 Web 应用程序项目吗?

【讨论】:

  • 您好,感谢您的意见。原始服务(通过 WebServiceHostFactory() 创建)在模拟器中工作;在 VS 开发服务器中;在 IIS Express(将 webrole 设置为启动项目)和 win2008 服务器上的完整 IIS 7 中。它唯一不起作用的地方是 Azure WebRole
  • 您能否在网上放一个包含演示您的问题的示例的 zip,因为我真的不明白其中的区别并想自己做一些测试?
  • 好主意。我将尝试构建一个示例并发布它。这可能需要几天时间,但我会尝试。谢谢。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2017-12-10
  • 2014-05-07
  • 1970-01-01
  • 2015-08-24
  • 2018-08-20
相关资源
最近更新 更多