1

我正在编写一个 WCF 应用程序,用于使用 POST 接受来自 android 的文件,它会引发 System.ServiceModel.ServiceActivation 异常,我从链接中了解要做什么:-

wcf 服务中的 System.ServiceModel.ServiceActivationException

以下是Web.config文件

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

    <system.web>
        <compilation debug="true" targetFramework="4.0" />
    </system.web>
    <system.serviceModel>
        <behaviors>
            <serviceBehaviors>
                <behavior name="Service1Behavior">
                    <serviceMetadata httpGetEnabled="true"/>
                    <serviceDebug includeExceptionDetailInFaults="false"/>

                </behavior>
            </serviceBehaviors>
            <endpointBehaviors>
                <behavior name="web">
                    <webHttp/>
                </behavior>
            </endpointBehaviors>
        </behaviors>

        <services>
            <service name="WcfImageUpload.Service1"
                     behaviorConfiguration="ServiceBehaviour" >
                <host>
                    <baseAddresses>
                        <add baseAddress="http://somesite.com:5555/Service1/" />
                    </baseAddresses>
                </host>
                <endpoint name="Service1"
                          address=""
                          binding="webHttpBinding"
                          contract="WcfImageUpload.IService1" 
                          behaviorConfiguration="web"/>

                <endpoint name="LoginServiceMex"
                          address="mex"
                          binding="mexHttpBinding"
                          contract="IMetadataExchange" />
            </service>
        </services>
    </system.serviceModel>
</configuration>

我需要添加绑定

<bindings>
  <webHttpBinding>
    <binding name="WebHttpEndpointBinding">
      <security mode="TransportCredentialOnly">
        <transport clientCredentialType="Windows"/>
      </security>
    </binding>
  </webHttpBinding>
</bindings>

我应该在哪里添加,我是 .NET 和 WCF 的新手。

4

2 回答 2

0

你可以像下面这样放置......

<system.serviceModel>
  <services>
   <service  name="MyService">
  <endpoint address="http://localhost/IISHostedService/MyService.svc" 
  binding="wsHttpBinding" bindingName="wshttpbind" contract="IMyService">
  <identity>
  <dns value="localhost"/>
  </identity>
  </endpoint>
  <endpoint address="mex" binding="mexHttpBinding" contract="IMetadataExchange"/>
    </service>
  </services>
  <bindings>
      <webHttpBinding>
         <binding name="WebHttpEndpointBinding">
           <security mode="TransportCredentialOnly">
             <transport clientCredentialType="Windows"/>
           </security>
         </binding>
      </webHttpBinding>
   </bindings>

</system.serviceModel>

谢谢你,维沙尔·帕特尔

于 2013-10-22T13:49:28.073 回答
0

您需要在<system.ServiceModel>标记内的 WCF 服务的 web.config 中包含绑定。

您有多个 WCF 支持的绑定,例如基本的 http 绑定、Web HttpBinding、wsHttpBinding 等。

如果您要像 asmx 服务一样访问该服务,请使用使用 SOAP 的 BasicHttpBinding。

如果您希望 WCF 为 RESTful ,则使用 WebHttpBinding 并相应地配置行为。还有其他更安全的绑定,例如 wsHttpBindlings。

于 2013-10-25T16:25:16.933 回答