【发布时间】: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