我的Silverlight / WCF配置有什么问题

时间:2013-09-07 01:38:48

标签: c# asp.net .net wcf silverlight

我承认,我已经挣扎了几个小时。我必须在Silverlight应用程序和WCF Web服务之间缺少绑定/配置。它工作了一段时间,但我必须不小心改变了一些设置,我再也无法让它工作了。

在我调试的Visual Studio中,我同时启动了Service和Silverlight应用程序,我在web.config文件中禁用了Windows身份验证以进行调试。部署时,我返回并更改配置文件以启用Windows安全/传输,以便我可以在Web服务端获取用户凭据。

现在,当我使用IIS将WCF服务和Silverlight应用程序部署到另一台计算机时,我在Silverlight尝试联系WCF服务时收到“Not Found”错误。有人可以向我解释存在的不同配置文件以及每个应该指向的内容吗?以下是我们各自位置的配置文件:

的wwwroot \ webserviceapp \ web.config中

<?xml version="1.0" encoding="UTF-8"?>

       

<bindings>
  <basicHttpBinding>
    <binding name="BasicHttpEndpointBinding">
      <security mode="TransportCredentialOnly">
        <transport clientCredentialType="Windows"/>
      </security>
    </binding>
  </basicHttpBinding>
</bindings>
<services>
  <service behaviorConfiguration="ServiceBehavior" name="WebserviceName.Service1">
    <endpoint address="" binding="basicHttpBinding"
      bindingConfiguration="BasicHttpEndpointBinding"
      name="BasicHttpEndpoint" contract="WebserviceName.IService1">
    </endpoint>
  </service>
</services>

<behaviors>
  <serviceBehaviors>
    <behavior name="ServiceBehavior">
      <serviceMetadata httpGetEnabled="true" />
      <serviceDebug includeExceptionDetailInFaults="false" />
    </behavior>
  </serviceBehaviors>
</behaviors>

<serviceHostingEnvironment multipleSiteBindingsEnabled="true" aspNetCompatibilityEnabled="true" />

                           

wwwroot \ web.config - 我猜这是Silverlight的web.config吗?

<?xml version="1.0" encoding="UTF-8"?>

                  

<system.serviceModel>
    <bindings>
        <basicHttpBinding>
            <binding name="BasicHttpEndpoint" closeTimeout="00:01:00" openTimeout="00:01:00" receiveTimeout="00:10:00" sendTimeout="00:01:00" allowCookies="false" bypassProxyOnLocal="false" hostNameComparisonMode="StrongWildcard" maxBufferSize="65536" maxBufferPoolSize="524288" maxReceivedMessageSize="65536" messageEncoding="Text" textEncoding="utf-8" transferMode="Buffered" useDefaultWebProxy="true">
                <readerQuotas maxDepth="32" maxStringContentLength="8192" maxArrayLength="16384" maxBytesPerRead="4096" maxNameTableCharCount="16384" />
                      <security mode="TransportCredentialOnly">
                        <transport clientCredentialType="Windows" />
                      </security>
            </binding>
        </basicHttpBinding>
    </bindings>
    <client>
        <endpoint address="http://<<<ip_to_machine>>>/webserviceapp/Service1.svc" 
            binding="basicHttpBinding" 
            bindingConfiguration="BasicHttpEndpoint" 
            contract="ServiceReference1.IService1"
            name="BasicHttpEndpoint" />
    </client>
</system.serviceModel>
<system.webServer>
    <defaultDocument>
        <files>
            <add value="ProjectTestPage.html" />
        </files>
    </defaultDocument>
</system.webServer>

wwwwroot \ ClientBin \ SilverlightApp.xap(ServiceReferences.ClientConfig文件):

<configuration>
<system.serviceModel>
    <bindings>
        <basicHttpBinding>
            <binding name="BasicHttpEndpoint" maxBufferSize="2147483647"
                maxReceivedMessageSize="2147483647">
                                <security mode="TransportCredentialOnly" />
            </binding>
        </basicHttpBinding>
    </bindings>
    <client>
        <endpoint address="http://<<<ip_to_machine>>>/webserviceapp/Service1.svc" 
                binding="basicHttpBinding"
            bindingConfiguration="BasicHttpEndpoint" 
            contract="ServiceReference1.IService1"
            name="BasicHttpEndpoint" />
    </client>
</system.serviceModel>

这三个配置文件似乎驱动一切,除非我错了?由于我在一个环境上开发并部署到另一个环境,因此我似乎必须更改这些文件以指向正确的资源。当我将Silverlight应用程序部署到新机器后点击我的Silverlight应用程序时,我会加载应用程序。加载完成后,第一次进行Web服务调用会失败并出现异常,我会在Chrome控制台中看到此内容:

Failed to load resource: the server responded with a status of 500 (Internal Server Error) http://<<<ip_to_machine>>>/webserviceapp/Service1.svc
Failed to load resource: the server responded with a status of 500 (Internal Server Error) http://<<<ip_to_machine>>>/webserviceapp/Service1.svc
Uncaught Error: Unhandled Error in Silverlight Application An exception occurred during the operation, making the result invalid.  Check InnerException for exception details.   at System.ComponentModel.AsyncCompletedEventArgs.RaiseExceptionIfNecessary()
   at Project.ServiceReference1.GetAllNewsCompletedEventArgs.get_Result()
   at Project.View.Home1.ClientGetAllNewsCompleted(Object pSender, GetAllNewsCompletedEventArgs pEventArgs)
   at Project.ServiceReference1.Service1Client.OnGetAllNewsCompleted(Object state)

我99%肯定该服务永远不会受到影响。我在函数的最顶部有一个日志语句被调用,它从不记录任何东西。

IIS配置: Web服务身份验证: 匿名=已禁用 ASP.NET Impersonation =已禁用 Windows身份验证=已启用

默认网站(托管我的silverlight应用): 匿名=已禁用 ASP.NET Impersonation =已禁用 Windows身份验证=已启用

任何人都有任何建议,或者我需要更多信息来帮助调试?

编辑:值得注意的是,我能够从另一台机器导航到该服务,并且看到服务wsdl就好了。例如:

http://ipaddress/webserviceapp/Service1.svc

我可以看到这很好,没有错误。

1 个答案:

答案 0 :(得分:0)

我认为答案非常简单。我收到的错误是一个非常普遍的错误。在这个例子中,正确的做法是使用Fiddler,它会告诉你错误是什么。就我而言,由于服务未正确加载,Trace日志记录无法正常工作。然而,Fiddler能够给我确切的异常消息,这使我能够快速,轻松地解决问题。