C# Windows Azure WebRole中的WcfWebApi始终返回404,但在本地是正常的

C# Windows Azure WebRole中的WcfWebApi始终返回404,但在本地是正常的,c#,azure,wcf-web-api,C#,Azure,Wcf Web Api,我被困在可怕的“它在本地工作”的问题上 我使用NuGet将WcfWebApi安装到Azure WebRole中。 这是一个WebForms网站 Global.asax.cs应用程序_Start调用registerOutes() RegisterRoutes()包含:RouteTable.Routes.Add(新服务路由(“MySvc/TheService/”,新WebServiceHostFactory(),类型(Services.TheService)) 该服务的接口包含: [Operatio

我被困在可怕的“它在本地工作”的问题上

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

Global.asax.cs应用程序_Start调用registerOutes()

RegisterRoutes()包含:
RouteTable.Routes.Add(新服务路由(“MySvc/TheService/”,新WebServiceHostFactory(),类型(Services.TheService))

该服务的接口包含:

[OperationContract]
    [WebGet(UriTemplate = "/hello", BodyStyle = WebMessageBodyStyle.Bare)]
    string Hello();
实现类只返回“hello”,因此如果现在导航到:-我将返回“hello”。嗯

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

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

谢谢你的建议。谢谢

编辑:根据@Rajesh的建议,我运行了Get_HostedServices,其中列出了托管服务的URL,例如:。我不太清楚这是怎么回事

在完全绝望的情况下,我将一个.svc文件添加到我的web应用程序中的一个文件夹中,以及REST风格配置所需的所有(可怕的)system.serviceModel服务等。这一切都有效


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

我考虑过你的问题,你能尝试使用IIS或IIS Express在本地运行你的应用程序吗?(IIS express不是现成的,您必须安装它,但它更易于与VS一起使用)

您提供的url使我认为VS使用Cassini(VisualStudioDevelopmentServer)或IIS express。请注意,卡西尼号的工作原理与IIS不完全相同,而IIS Express则相反。您的Azure web角色将在IIS下运行,这可以解释您正在经历的不同行为

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


我假设您的项目是一个windows azure项目。测试时,您确定您正在启动azure项目而不是web应用程序项目吗?

有关如何列出所有托管服务的一些信息,请访问此链接:@Rajesh:谢谢,但我非常确定只列出托管的azure服务。我知道WebRole已启动-我可以看到它。只是WebRole托管服务中的WcfWebApi路由终结点不存在。thx无论如何,当您尝试查看上述托管服务列表时,它不会显示该服务的位置。还可以尝试从IIS在Azure服务器上的IE中浏览该服务,它应该为您提供路径,从那里您应该能够o找出资源的位置。奇怪的是,我在上做的事情大致相同,而且效果很好。您确定您的web.config上没有任何可能引发问题的内容。您好,感谢您的输入。原始服务(通过WebServiceHostFactory()创建)在emulator中工作;在VS Development Server中工作;在IIS Express中工作(将webrole设置为启动项目)在win2008服务器上安装完整的IIS 7。它唯一不起作用的地方是在Azure WebroleCool中。您可以在网上放置一个包含示例的zip文件来演示您的问题,因为我真的不理解其中的区别,希望自己做一些测试?好主意。我将尝试构建一个示例并发布它。这可能需要几天时间,但我会尝试。谢谢