无法添加服务引用

5

我开始学习WCF。我编写了一个简单的服务来通过LINQ查询SQL关系。

[ServiceContract]
[AspNetCompatibilityRequirements(RequirementsMode = aspNetCompatibilityRequirementsMode.Allowed)]
public class Order_WCFService 
   {

    [OperationContract]    
    public List<Order> getOrders()
    {
        List<Order> orderList= null;

        try
        {
            orderList= DAL.GetList<Order>();
            return orderList;
        }
        catch (Exception)
        {
            throw;
        }
    }     
}

这个位于ASP.NET-MVC项目中。

我有一个简单的Silverlight应用程序。它在同一个解决方案中,但在不同的项目中。

我想通过Silverlight应用程序使用我的服务。

我尝试“添加服务引用...”,在左侧列中,我有所有可用的ASMX和WCF服务的列表。当我点击任何一个服务时,它会尝试下载服务信息,但在10-20秒后失败:“尝试查找服务时发生错误(详细信息)...”

我做错了什么?

谢谢

我可以通过AJAX调用服务,所以我100%确定服务是可用的。


检查通过添加服务引用发现的URL是否正常工作 - 直接将其粘贴到您的Web浏览器中。 - Dave Russell
当您点击(详细信息)时,了解显示的错误消息将非常有帮助。如果像我一样显示“端口####正忙”,则需要将GO URL中的“localhost”替换为显式IP地址,例如127.0.0.1,以解决问题。 - CAK2
1个回答

2
也许这是一个愚蠢的问题,但当您尝试添加服务引用时,服务是否正在运行(如果您使用Visual Studio内置的Web服务器,则它是否已启动并包含服务的ASP.NET MVC项目是否正在运行)?此外,您可以尝试在“添加服务引用”对话框中提供WSDL的完整地址,而不是在验证浏览器中可访问此WSDL后从列表中选择。请注意保留HTML标签。

1
谢谢回复。一旦我点击“添加服务引用…”,VS IDE就会启动一个Web服务器,我可以在屏幕右下角看到它。当我导航到http://localhost:3697/Order_WCFService.svc时,会显示一条消息,告诉我已经创建了一个服务。 - user338195
你所说的完整地址是指:localhost:3697/Order_WCFService.svc吗? - user338195
使用该地址会导致以下错误:"从该地址下载元数据时出错。请验证您输入的地址是否有效。" - user338195
HTML文档未包含Web服务发现信息。 元数据包含一个无法解析的引用:'http://localhost:3697/Order_WCFService.svc'。 响应消息的内容类型text/html; charset=utf-8与绑定的内容类型(application/soap+xml; charset=utf-8)不匹配。如果使用自定义编码器,请确保实现了IsContentTypeSupported方法。响应的前1024个字节为: '<! DOCTYPE html PUBLIC "-// W3C // DTD XHTML 1.0 Transitional // EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transit... - user338195
1
您也可以尝试使用命令行工具:c:\Program Files\Microsoft SDKs\Silverlight\v3.0\Tools\SlSvcUtil.exe http://localhost:3697/Order_WCFService.svc?WSDL,这将为您提供有关错误的更多详细信息。还要确保在服务web.config文件中启用了元数据信息:<serviceMetadata httpGetEnabled="true"/> - Darin Dimitrov
显示剩余4条评论

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接