パラメータとして指定された場所にディレクトリを作成する単純な WCF サービスがあります。このサービスは Windows サービスとしてホストされ、管理者アカウントで実行されます。
InstanceContextMode は Single であり、Concurrency も同様です。
このメソッドは、作成後にディレクトリの場所の文字列を返します。
クライアントは、ASP.NET を使用して別のコンピューターからこのサービスにアクセスしています。彼にはユースケースがあり、2 秒間に 5 回クリックするなど、ページ上のボタンを数秒間に複数回クリックします。何が起こっているかというと、サービスは 5 つすべてではなく、2 つまたは 3 つのフォルダーしか作成しないということです。
WCF には既定のキューイング メカニズムがあることを知っていますが、私のサービスではそれが機能していないか、そのメカニズムを使用するように記述していません。
この問題を解決するにはどうすればよいですか。
ボタンクリック用の ASP.NET コードは次のとおりです。
protected void Button1_Click(object sender, EventArgs e)
{
ClientClass objClientClass = new ClientClass();
string returnValue = string.Empty;
Random random = new Random();
string uid = random.Next().ToString();
returnValue = objClientClass.StartWorkflow(uid);
Label1.Text = returnValue;
}
ホストの app.config は次のとおりです。
<configuration>
<system.diagnostics>
<sources>
<source name="System.ServiceModel"
switchValue="All"
propagateActivity="true">
<listeners>
<add name="traceListener" />
</listeners>
</source>
<source name="System.ServiceModel.MessageLogging"
switchValue="All"
propagateActivity="true">
<listeners>
<add name="traceListener" />
</listeners>
</source>
</sources>
<sharedListeners>
<add name="traceListener"
type="System.Diagnostics.XmlWriterTraceListener"
initializeData="Traces.svclog" />
</sharedListeners>
</system.diagnostics>
<system.web>
<compilation debug="true"></compilation>
</system.web>
<system.serviceModel>
<diagnostics>
<messageLogging logEntireMessage="true"
logMessagesAtServiceLevel="false"
logMessagesAtTransportLevel="false"
logMalformedMessages="true"
maxMessagesToLog="5000"
maxSizeOfMessageToLog="2000">
</messageLogging>
</diagnostics>
<behaviors>
<serviceBehaviors>
<behavior name="NewBehavior">
<serviceMetadata httpGetEnabled="true" />
<serviceThrottling maxConcurrentCalls="1" maxConcurrentSessions="5" maxConcurrentInstances="5" />
</behavior>
</serviceBehaviors>
</behaviors>
<services>
<service behaviorConfiguration="NewBehavior" name="Utilities.WS.SampleWebService.Jobs">
<endpoint address="" binding="basicHttpBinding" bindingConfiguration=""
contract="Utilities.WS.SampleWebService.IJobs" />
<endpoint address="mex" binding="mexHttpBinding" contract="IMetadataExchange"/>
<host>
<baseAddresses>
<add baseAddress="http://00.00.000.00:8732/Utilities.WS.SampleWebService.Jobs" />
</baseAddresses>
</host>
</service>
</services>
</system.serviceModel>
</configuration>
よろしく。