调试时,WCF服务应用程序模板会引发错误

时间:2011-07-18 22:31:15

标签: wcf

我尝试使用VS2010 WCF服务应用程序模板来创建新的WCF服务。编辑默认服务合同并更新此合同的实现后,我尝试从VS(F5)中运行该服务。

在尝试添加我的服务时,WCF测试客户端启动并抛出并出错。

  

无法添加服务。可能无法访问服务元数据。确保您的服务正在运行并公开元数据。

我没有对web.config进行更改。我发布了同样的问题here.

然而,与其他帖子不同,我的服务合约是一个界面。有人能告诉我我做错了吗?

谢谢!

CheckIn.svc

using System;
using System.IO;

namespace org.myorg.pkggateway
{

    public class PackageCheckIn : IPackageCheckIn
    {
        public bool CheckIn(int value)
        {
            try
            {
                StreamWriter sw = new StreamWriter("test.txt", true);
                sw.WriteLine(value.ToString());
                sw.Close();
            }
            catch(Exception e)
            {
                return false;
            }
            return true;
        }
    }
}

IPackageCheckIn.cs:

using System.Runtime.Serialization;
using System.ServiceModel;

namespace org.myorg.pkggateway {

    [ServiceContract]
    public interface IPackageCheckIn
    {
        [OperationContract]
        bool CheckIn(int value);
    }


   }

Web.config(与autogen不变):

    <?xml version="1.0"?>
<configuration>

  <system.web>
    <compilation debug="true" targetFramework="4.0" />
  </system.web>
  <system.serviceModel>    
    <behaviors>
      <serviceBehaviors>
        <behavior>
          <!-- To avoid disclosing metadata information, set the value below to false and remove the metadata endpoint above before deployment -->
          <serviceMetadata httpGetEnabled="true"/>
          <!-- To receive exception details in faults for debugging purposes, set the value below to true.  Set to false before deployment to avoid disclosing exception information -->
          <serviceDebug includeExceptionDetailInFaults="false"/>
        </behavior>
      </serviceBehaviors>
    </behaviors>
    <serviceHostingEnvironment multipleSiteBindingsEnabled="true" />
  </system.serviceModel>
 <system.webServer>
    <modules runAllManagedModulesForAllRequests="true"/>
  </system.webServer>

</configuration>

更新

似乎当我重命名模板创建重构的默认.svc文件时,并没有在任何地方重命名此文件。必须在其他地方引用它。但是,当我搜索整个解决方案以使用“Service1.svc”时,它在任何地方都不存在。有谁知道如何清理它?我甚至在文件系统上搜索了一个包含这个文件名的文件,但没有提到任何内容。我找不到VS仍在引用此.svc文件的位置。有人有这个问题吗?

我已完全删除了该服务并创建了一个新服务,问题仍然存在。

更新

当我运行我的解决方案时,WCF测试客户端无法加载已删除的服务。然而,确实存在的那个很好。我想我必须忽略这样一个事实,即我无法让测试客户“忘记”这项服务。

2 个答案:

答案 0 :(得分:0)

鉴于.svc文件存在问题,一种可能的解决方案是重新创建该文件。在VS上,创建一个新的文本文件,将其重命名为YourServiceName.svc,并添加以下内容:

<% @ServiceHost Service="org.myorg.pkggateway.PackageCheckIn" Language="C#" debug="true" %>

然后尝试浏览.svc文件(或使用WCF测试客户端打开.svc文件的URL)。

答案 1 :(得分:0)

您需要转到项目的属性并导航到Web选项卡。然后将特定页面更新为重命名的服务。