0

我有一个在 VS2012 的 4.0 框架中运行的 WCF 服务。我向我的服务添加了一个方法,突然服务引用在另一个项目中无法正确更新。Reference.cs 文件中只有一个类,而不是它通常具有的大量其他类。更新参考过程说它完成了,它没有给出任何错误消息。

我在事件日志中发现了这一点,但并不一致:

    WebHost failed to process a request.
 Sender Information: System.ServiceModel.Activation.HostedHttpRequestAsyncResult/18956358
 Exception: System.Web.HttpException (0x80004005): The service '/MyCompanyService/SystemService.svc/_vti_bin/ListData.svc' does not exist. ---> System.ServiceModel.EndpointNotFoundException: The service '/MyCompanyService/SystemService.svc/_vti_bin/ListData.svc' does not exist.
   at System.ServiceModel.ServiceHostingEnvironment.HostingManager.EnsureServiceAvailable(String normalizedVirtualPath, EventTraceActivity eventTraceActivity)
   at System.ServiceModel.ServiceHostingEnvironment.EnsureServiceAvailableFast(String relativeVirtualPath, EventTraceActivity eventTraceActivity)
   at System.ServiceModel.Activation.HostedHttpRequestAsyncResult.HandleRequest()
   at System.ServiceModel.Activation.HostedHttpRequestAsyncResult.BeginRequest()
   at System.Runtime.AsyncResult.End[TAsyncResult](IAsyncResult result)
   at System.ServiceModel.Activation.HostedHttpRequestAsyncResult.End(IAsyncResult result)
 Process Name: WebDev.WebServer40
 Process ID: 13212

ListData 不是我的服务之一,所以它几乎就像 WCF 中内置的东西。

在尝试了很多事情之后,我发现如果我删除了一种现有的服务方法,并添加了我的新方法,它就可以正常工作。所以看起来我已经达到了一个服务可以有多少方法的限制。我尝试了此处发布的建议,这些建议涉及更改服务和 devenv.config 上的 maxNameTableCharCount,但我仍然遇到了问题。

我的代码设置方式我有一个 WCF 服务,它使用部分类和部分接口分解为许多文件。有趣的是,当我从其他部分类中删除不能解决问题的方法时。我必须从要添加的同一个文件或部分类中删除一个方法。

谢天谢地,我发现了两种不再需要的方法,但我很快就会再次遇到这种情况。很多人说方法的数量没有限制,也许吧。它可能只是对发送的 XML 大小的限制。但这并不能解释为什么我可以删除另一个部分类中的方法,并且它没有任何效果。

那么如何使用 WCF 解决这个问题呢?是否有其他替代方案可以提供多种服务或只是切换到我可能会做的 Web API?

示例代码:

    public partial interface IMyCompanyService
{
    [OperationContract]
    SubmissionReturn SubmitApplication(MyCompanyAuthentication auth, MyApplication application); 

...30 other methods defined just like this one...
}
    public partial class MyCompanyService : IMyCompanyService
{
    public SubmissionReturn SubmitApplication(MyCompanyAuthentication auth, ResellerApplication application)
    {
        authentication.Authenticate(auth);
        MyApplicationBLL bll = new MyApplicationBLL();
        return bll.SubmitApplication(application);
    }
}

每个服务部分类具有以下方法数量服务文件 A:31 服务文件 B:76 服务文件 C:52 服务文件 D:19

4

0 回答 0