【发布时间】:2017-12-21 23:42:16
【问题描述】:
我是 WCF 的新手。我有 asp.net 项目,这是普通的 3tire 项目。我的解决方案的结构就像 1. DAL(类库数据访问层项目) 2. BL(类库业务逻辑) 3. BO(业务对象类库) 4.TestOnline(主web项目客户端) 5. WCFServices(类库项目) 现在我想将 WCF 类库项目包含到同一个解决方案中,并使用 WCF 服务来学习。我创建了适当的服务和合同。我的主 web 项目的 web.config 文件修改如下
<configuration>
<connectionStrings>
<add name="dbConnect" connectionString="Data Source=WIN-3150RFE75I8\PMSSERVER;Initial Catalog=TestDb_OnlineExam;Persist Security Info=True;User ID=sa;Password=pmsadmin1!" />
</connectionStrings>
<system.web>
<compilation debug="true" targetFramework="4.0" />
<authentication mode="Forms">
</authentication>
</system.web>
<system.serviceModel>
<serviceHostingEnvironment aspNetCompatibilityEnabled="true" multipleSiteBindingsEnabled="true"></serviceHostingEnvironment>
<services>
<service name="WCFServices.LoginWcfService" behaviorConfiguration="LoginWcfServiceBehavior">
<endpoint address="" binding="webHttpBinding" contract="WCFServices.ILoginWcfService" behaviorConfiguration="web">
<identity>
<dns value="localhost"/>
</identity>
</endpoint>
</service>
</services>
<behaviors>
<serviceBehaviors>
<behavior name="LoginWcfServiceBehavior">
<serviceMetadata httpGetEnabled="true" />
<serviceDebug includeExceptionDetailInFaults="false" />
<serviceDiscovery></serviceDiscovery>
</behavior>
</serviceBehaviors>
<endpointBehaviors>
<behavior name="web">
<webHttp/>
</behavior>
</endpointBehaviors>
</behaviors>
<protocolMapping>
<add binding="webHttpBinding" scheme="http"/>
</protocolMapping>
</system.serviceModel>
</configuration>
当我尝试运行我的项目时,显示的错误消息是:
在 ServiceModel 客户端配置部分中找不到引用合同“LoginServiceReference.ILoginWcfService”的默认端点元素。这可能是因为找不到您的应用程序的配置文件,或者因为在客户端元素中找不到与此协定匹配的端点元素。
我无法找到有关此错误的任何信息。
我检查了我的 WCF 服务的运行情况,它运行良好。只是无法在我的网络项目中使用它。我需要添加/修改哪些属性才能正常工作。
【问题讨论】:
-
您拥有包含 WCF 项目和 ASP.Net 项目以及 DAL、业务层项目的单一 Visual Studio 解决方案是否正确?如果是这样,我首先想到的是将包括所有依赖项目在内的 WCF 项目保留在一个单独的 VS 解决方案中。通过这种方式,您可以将 WCF 托管在基于控制台的应用程序中以进行调试。其次,您的配置文件没有“LoginServiceReference.ILoginWcfService”的任何合同条目您是否发布了web.config文件的所有内容?
-
@YawarMurtaza 没有必要将所有 WCF 项目放在 “另一个解决方案” 中,只是为了基于控制台的调试或其他方式
-
@MickyD 这是正确的,我从来没有说过这是必要的。由于 OP 对 WCF 来说是新的,因此保持事物的独立性是有意义的,这有助于它的组织性和透明性。在学习新技术时,这样的小事真的很有帮助:)
标签: c# asp.net .net web-services wcf