我试图实现一个WCF方法的发射后不管模式。 我在我的本地环境这方面的工作,但在IIS7运行的时候遇到了一个问题。
我使用net.tcp绑定,并且发现使用这种绑定一个单向通话,即使,关闭代理将阻止用户界面(在这种情况下,一个asp.net网站)直到操作完成。 我改变了传输模式为流,从而关闭代理不会造成等待,如建议这篇文章 。
正如我所说,这是工作,当我在本地主机上运行,但是当我部署到IIS7,我尽快得到这个错误,我打它利用合同法的页面:
“不支持取景模式单身。”
如果我更改绑定的transferMode
属性为“缓冲”,我不明白的错误,但我回到我原来有关闭代理块,直到服务操作完成的问题
任何帮助将不胜感激。
我的代码:
// Operation Contract
[OperationContract(Name = "LoadNewDataset", IsOneWay = true)]
void LoadDataset(Workspace workspace, Connection connection, string dataSetName);
// WCF Config snippets:
<bindings>
<netTcpBinding>
<binding name="NetTcpStreamBinding"
transferMode="Streamed">
</binding>
</netTcpBinding>
</bindings>
....
<endpoint address="DataImportService" binding="netTcpBinding"
bindingConfiguration="NetTcpStreamBinding" name="DataImportEndpoint"
contract="MediaBrands.Adroit.WCF.IDataImportService" />
//Website web.config
<bindings>
<netTcpBinding>
<binding name="DataImportEndpoint" closeTimeout="00:10:00" openTimeout="00:01:00"
receiveTimeout="00:10:00" sendTimeout="00:10:00" transferMode="Streamed"
hostNameComparisonMode="StrongWildcard" maxBufferPoolSize="524288"
maxBufferSize="5242880" maxReceivedMessageSize="5242880">
<readerQuotas maxDepth="32" maxStringContentLength="65536" maxArrayLength="16384"
maxBytesPerRead="4096" maxNameTableCharCount="16384" />
<security mode="Transport">
<transport clientCredentialType="Windows" protectionLevel="EncryptAndSign" />
</security>
</binding>
....
<endpoint address="net.tcp://localhost:8001/AdroitWcf/DataImportService"
binding="netTcpBinding" bindingConfiguration="DataImportEndpoint"
contract="AdroitServiceReference.IDataImportService" name="DataImportEndpoint">
</endpoint>