添加WCF服务时VS2008崩溃

时间:2009-01-06 20:42:44

标签: c# visual-studio wcf

我有一个托管WCF服务的控制台应用程序:

更新此代码以运行app.config文件,而不是以编程方式初始化

Uri baseAddress = new Uri("http://localhost:8000/ChatServer/Service");
        ServiceHost myHost = new ServiceHost(typeof(ClientServerChat.ChatServer), baseAddress);

            myHost.AddServiceEndpoint(typeof(IChat), new WSHttpBinding(), "ChatService");
            ServiceMetadataBehavior mb = new ServiceMetadataBehavior();
            ServiceBehaviorAttribute attrib = (ServiceBehaviorAttribute)myHost.Description.Behaviors[0];
            attrib.IncludeExceptionDetailInFaults = true;
            mb.HttpGetEnabled = true;
            myHost.Description.Behaviors.Add(mb);

            myHost.Open();

Console应用程序编译并运行。 svcutil运行得很好。

Svcutil完美地运行新服务代码并生成客户端代码和输出文件

我通过Visual Studio命令提示符调用svcutil,如下所示:svcutil.exe http://localhost:8000/ChatServer/Service

它会生成此output.config:

<?xml version="1.0" encoding="utf-8"?>
  <configuration>
   <system.serviceModel>
     <bindings>
       <wsHttpBinding>
         <binding name="WSHttpBinding_IChat" closeTimeout="00:01:00" openTimeout="00:01:00"
        receiveTimeout="00:10:00" sendTimeout="00:01:00" bypassProxyOnLocal="false"
        transactionFlow="false" hostNameComparisonMode="StrongWildcard"
        maxBufferPoolSize="524288" maxReceivedMessageSize="65536"
        messageEncoding="Text" textEncoding="utf-8" useDefaultWebProxy="true"
        allowCookies="false">
           <readerQuotas maxDepth="32" maxStringContentLength="8192" maxArrayLength="16384"
          maxBytesPerRead="4096" maxNameTableCharCount="16384" />
           <reliableSession ordered="true" inactivityTimeout="00:10:00"
          enabled="false" />
           <security mode="Message">
             <transport clientCredentialType="Windows" proxyCredentialType="None"
            realm="" />
             <message clientCredentialType="Windows" negotiateServiceCredential="true"
            algorithmSuite="Default" establishSecurityContext="true" />
           </security>
         </binding>
       </wsHttpBinding>
     </bindings>
    <client>
       <endpoint address="http://localhost:8000/ChatServer/Service/ChatService"
      binding="wsHttpBinding" bindingConfiguration="WSHttpBinding_IChat"
      contract="IChat" name="WSHttpBinding_IChat">
         <identity>
           <userPrincipalName value="Bedroom-PC\Roberto" />
         </identity>
      </endpoint>
     </client>
   </system.serviceModel>
 </configuration>

随着捆绑的客户端代码(与输出文件在同一目录中,我应该添加)我应该可以用这个来调用服务:

ChatClient client = new ChatClient();

svcutil的新输出(包括代码和配置)仍会抛出此异常。

但它抛出一个例外说:

“无法在ServiceModel客户端配置部分找到引用合同'IChat'的默认端点元素。这可能是因为没有找到您的应用程序的配置文件,或者因为在客户端中找不到与此合同匹配的端点元素元素“。

有趣的是,在向客户端项目添加相同的Service引用时,Visual Studio 2008将崩溃。

VS2008仍然因更新的代码而崩溃。

它会找到服务,获得所有操作,什么不是。当我单击“添加”时,它会崩溃。

任何人都有线索?

提前致谢

罗伯特

3 个答案:

答案 0 :(得分:0)

您是否尝试过使用配置文件设置而不是以编程方式进行操作?那么至少你会知道这是一般设置问题还是与你的代码有关。然后你可以逐个推出代码位; mex,然后是终点,看看哪个杀了它。

答案 1 :(得分:0)

VS2008会在没有任何反馈的情况下死掉吗?如果是,请检查Windows事件日志(应用程序日志)以获取错误消息。

一个可能的原因:当VS2008尝试加载System.Core或任何引用/依赖它的东西时,VS2008 + System.Core.dll 3.5 +错误的NGen映像可能导致崩溃。

您可能还希望将一个VS实例附加到另一个(作为调试器)以查看任何其他崩溃详细信息。但我会首先探索System.Core / NGen轨道。

https://connect.microsoft.com/VisualStudio/feedback/ViewFeedback.aspx?FeedbackID=341658 https://connect.microsoft.com/VisualStudio/feedback/ViewFeedback.aspx?FeedbackID=337149 https://connect.microsoft.com/VisualStudio/feedback/ViewFeedback.aspx?FeedbackID=330302 https://connect.microsoft.com/VisualStudio/feedback/ViewFeedback.aspx?FeedbackID=330903

答案 2 :(得分:0)

我修好了。

我在userSettings部分之后将output.config中的system.serviceModel部分复制并粘贴到app.config中,并注释掉了整个output.config。

我还在确定ChatClient(“name”)的位置时指定了端点的名称。

似乎有效。