在不同的计算机上部署后,不会调用简单的WCF服务,但在我的本地系统上运行正常

时间:2015-01-28 08:09:59

标签: wcf silverlight

我只是尝试创建一个非常简单的wcf应用程序。这是点击按钮我试图打印" Hello World"在页面上。我发布了该服务,并且它在我的本地系统上工作正常,但是当我尝试在服务器上部署时它也没有。这个应用程序很简单,没有复杂性,没有数据库连接,没什么。但仍无法从服务器调用该服务。检查服务,(Service1.svc - 。右键单击 - >浏览)工作正常,但为什么它无法通过应用程序调用,我不知道。它现在变得更加混乱。对此完全无能为力。发布代码中使用的所有3个必要文件。

web.config文件:

<?xml version="1.0"?>
<!--
  For more information on how to configure your ASP.NET application, please visit
  http://go.microsoft.com/fwlink/?LinkId=169433
  -->
<configuration>
    <system.web>
        <compilation debug="true" targetFramework="4.0" />
    </system.web>
    <system.serviceModel>
<services>
        <service name ="ApplicationReturnString.Web.Service1.svc">
          <endpoint address="" binding="basicHttpBinding"
                contract="ServiceReference1.IService1"/>
        </service>
      </services> 
        <behaviors>
            <serviceBehaviors>
                <behavior name="">
                    <serviceMetadata httpGetEnabled="true" />
                    <serviceDebug includeExceptionDetailInFaults="false" />
                </behavior>
            </serviceBehaviors>
        </behaviors>
        <serviceHostingEnvironment multipleSiteBindingsEnabled="true" />
    </system.serviceModel>
</configuration>

ClientAccessPolicy.xml文件:

<?xml version="1.0" encoding="utf-8" ?>
<access-policy>
  <cross-domain-access>
    <policy>
      <allow-from http-request-headers="*">
        <domain uri="*"/>
      </allow-from>
      <grant-to>
        <resource include-subpaths="true" path="/"/>
      </grant-to>
    </policy>
  </cross-domain-access>
</access-policy>

CrossDomain.xml文件:

<?xml version="1.0" ?>
<!DOCTYPE cross-domain-policy SYSTEM 
    "http://www.macromedia.com/xml/dtds/cross-domain-policy.dtd">
<cross-domain-policy>
  <allow-http-request-headers-from domain="*" headers="*"/>
</cross-domain-policy>

ServiceRefrence.ClientConfig文件:

<configuration>
    <system.serviceModel>
        <bindings>
            <basicHttpBinding>
                <binding name="BasicHttpBinding_IService1" maxBufferSize="2147483647"
                    maxReceivedMessageSize="2147483647">
                    <security mode="None" />
                </binding>
            </basicHttpBinding>
        </bindings>
        <client>
            <endpoint address="http://localhost:52731/Service1.svc" binding="basicHttpBinding"
                bindingConfiguration="BasicHttpBinding_IService1" contract="ServiceReference1.IService1"
                name="BasicHttpBinding_IService1" />
        </client>
    </system.serviceModel>
</configuration>

1 个答案:

答案 0 :(得分:0)

感谢Roy&amp;尼廷。实际上问题是在web.config文件中设置端点地址,并且随着服务部署在其他机器中,应用程序的URL也发生了变化。所以我做了一些重要的更改,如下所示:1。在web.config文件中提供与ServiceRefrence.ClientConfig文件相同的端点地址,端点名称和合同详细信息。 2.在没有特定端口详细信息的情况下更改ServiceRefrence.ClientConfig中的端点地址:而不是;和3.在应用程序中编码以获取它执行的机器的URI地址,以便在部署应用程序的任何地方,用户都不必担心本地主机地址及其端口详细信息:Uri servUri = new Uri(&# 34; ../ Service.svc&#34;,UriKind.Relative); EndpointAddress servAddr = new EndpointAddress(servUri); ServiceReferenceForSelect.ServiceForSelectClient objSelect = new ServiceForSelectClient(&#34; BasicHttpBinding_IService&#34;,servAddr);