繁体   English   中英

如何修改WCF服务以与ASP.NET页面一起使用?

[英]How do I modify my WCF service to work with ASP.NET pages?

我创建了WCF服务(.NET 3.5),该服务从db获取数据并返回对象列表。 它工作正常。 我使用WCFTestClient应用程序对其进行了测试,并获得了预期的结果。

现在,我尝试创建一个ASP.NET Web应用程序并使用该服务。 在配置文件中启用<serviceDebug includeExceptionDetailInFaults="true"/>后,错误消息为“对象引用未设置为对象的实例”。

如何修改服务以与ASP.NET一起使用?

谢谢!

更新1-我创建了对该服务的引用。 当我运行最基本的测试应用程序时,根据服务默认网页上显示的示例代码,我收到了“对象引用未设置为对象实例”的消息。

当我使用Visual Studio附带的WCF测试客户端实用程序时,该服务返回正确的结果。 当我尝试使用以下代码时,都在page_load事件中,我得到了对象引用消息。

PhoneNumberServiceClient client = new PhoneNumberServiceClient();

// Use the 'client' variable to call operations on the service
List<PhoneNumber> phones = client.GetPhoneNumbers();  

// Always close the client.
client.Close();

我将尝试获取一些其他调试信息。

您还必须配置服务以允许结果中包含异常详细信息。 请按照此处的信息进行操作

我假设您的ASP.NET应用程序期望从尚未设置要提供的服务中捕获某些信息,因此会出现空对象错误。

我本以评论的形式写的,但无法弄清楚该怎么做,所以我想我会尝试回答。

您提到您使用了内置的测试客户端,但是在创建客户端应用程序(要用来调用新服务的网站)时,是否已将其端点(web.config)配置为与wcf服务的结尾相匹配? 例如,一个客户端应用程序使用wsHttpBinding端点调用wcf服务:

<configuration>
<system.serviceModel>
    <client>
        <endpoint address="http://localhost:8080/ContractorService" binding="wsHttpBinding" contract="ContractorService.IContractorService"
            name="ContractorService_WsHttp">
        </endpoint>
    </client>
</system.serviceModel>

同样,您的服务正在返回一个列表,您添加到客户端的默认服务引用很可能会在数组处停止。 右键单击您的客户端现在拥有的服务引用,然后选择“配置服务引用”,在集合类型的下拉框中,而不是System.array,选择System.Collections.Generic.List。

如果您需要有关配置的详细信息,请在此处检查http://msdn.microsoft.com/zh-cn/library/dd936243.aspx

在客户端的Page_Load方法中放置一个断点,您应该能够逐步浏览客户端代码,调用该方法后,它将自动在wcf服务中跳转,然后您可以确切地看到失败的地方。 希望这可以帮助

在使用以下方法初始化服务后,是否尝试过打开该服务:

client.Open();

如果问题仍然存在,则可能在于WCF方法本身。 尝试在您的方法上添加断点,然后对其进行调试以跟踪错误原因。 您也可以使用分析器。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM