:あなたはのServiceHostの動作を変更する必要が
。
属性は読み取り専用なので、ServiceHostに動作を削除し、readdする必要があります。
コンソールアプリケーションまたはWindowsサービスをお持ちの場合は、このサービスホストを定義します。このような
何か:(彼は可代わりに必要な書かれていなかった場合は...)オースティンハリスのコードは十分であろう
public static void Main()
{
using (ServiceHost serviceHost = new ServiceHost(typeof(CalculatorService)))
{
try
{
// Open the ServiceHost to start listening for messages.
serviceHost.Open();
// The service can now be accessed.
Console.WriteLine("The service is ready.");
Console.WriteLine("Press <ENTER> to terminate service.");
Console.ReadLine();
// Close the ServiceHost.
serviceHost.Close();
}
catch (TimeoutException timeProblem)
{
Console.WriteLine(timeProblem.Message);
Console.ReadLine();
}
catch (CommunicationException commProblem)
{
Console.WriteLine(commProblem.Message);
Console.ReadLine();
}
}
}
その場合には。
あなたはWCF-サービスは、ASP.NETアプリケーションに統合している場合は、トリッキーな部分はのServiceHostを取得することです。
キーはYOUR_SERVICE.svcマークアップファイル内の工場出荷時の属性です。
<%@ ServiceHost Factory="ApertureImportBelegung.DerivedFactory" Language="VB" Debug="true" Service="ApertureImportBelegung.ImportBelegung" CodeBehind="Service1.svc.vb" %>
あなた自身の工場を書く必要があります。
以下のコードはVB.NETで、私はC#に翻訳するために、読者にそれを残しておきます(あなたが道でtrueにWITH_FORMS_AUTHENTICATIONを設定する必要があり、およびC#のPSます:http://converter.telerik.com)
'Imports System.ServiceModel
Imports System.ServiceModel.Description
'Imports System.ServiceModel.Dispatcher
'Imports System.ServiceModel.Channels
'Imports System.ServiceModel.Configuration
Imports System.ServiceModel.Activation ' Add reference to assembly System.ServiceModel.Activation.dll
Public Class DerivedHost
Inherits ServiceHost
Public Sub New(t As Type, ParamArray baseAddresses() As Uri)
MyBase.New(t, baseAddresses)
End Sub
Protected Overrides Sub OnOpening()
'Me.Description.Behaviors.Add(New mys)
'Me.Description.Add(New MyServiceBehavior())
'Me.Description.Behaviors.Add(New WcfMessageLoggerExtension())
MyBase.OnOpening()
End Sub
End Class ' DerivedHost
' http://msdn.microsoft.com/en-us/library/aa702697(v=vs.110).aspx
Public Class DerivedFactory
Inherits ServiceHostFactory
Protected Overrides Function CreateServiceHost(t As Type, baseAddresses As Uri()) As ServiceHost
Return New DerivedHost(t, baseAddresses)
End Function ' CreateServiceHost
'Then in the CreateServiceHost method, we can do all of the
'things that we can do in a self-hosted case:
Public Overrides Function CreateServiceHost(service As String, baseAddresses As Uri()) As ServiceHostBase
Application.ConfigData.ReadConfigData()
' The service parameter is ignored here because we know our service.
Dim serviceHost As New ServiceHost(GetType(ImportBelegung), baseAddresses)
' System.ServiceModel.ServiceHostingEnvironment.AspNetCompatibilityEnabled = True
' http://stackoverflow.com/questions/13597408/wcf-message-inspector-is-not-working
'Dim serviceHost As New System.ServiceModel.ServiceHost(GetType(ImportBelegung))
'serviceHost.Description.Behaviors.Add(New WcfMessageLoggerExtension())
' http://stackoverflow.com/questions/5907791/how-to-programatically-create-a-wcf-service-and-its-metadata-on-the-same-url
' http://msdn.microsoft.com/en-us/library/system.servicemodel.servicehost(v=vs.110).aspx
' host.Open()
'This example iterates through all the ServiceEndpoint objects and adds ConsoleMessageTracing as an endpoint behavior:
For Each endpoint As ServiceEndpoint In serviceHost.Description.Endpoints
'endpoint.Behaviors.Add(New WcfMessageLoggerExtension())
'endpoint.Behaviors.Add(New ConsoleOutputBehaviorExtensionElement)
endpoint.Behaviors.Add(New MessageInspector.ConsoleOutputBehavior)
endpoint.Behaviors.Add(New HeaderInspector.ConsoleOutputHeaderBehavior)
Next endpoint
' Ensure (in <system.serviceModel>) aspNetCompatibilityEnabled="true" --> <serviceHostingEnvironment multipleSiteBindingsEnabled="true" aspNetCompatibilityEnabled="true" />
#Const WITH_FORMS_AUTHENTICATION = False
#If WITH_FORMS_AUTHENTICATION Then
For i As Integer = 0 To serviceHost.Description.Behaviors.Count - 1 Step 1
If TypeOf serviceHost.Description.Behaviors(i) Is AspNetCompatibilityRequirementsAttribute Then
serviceHost.Description.Behaviors.RemoveAt(i)
Exit For
End If
Next i
serviceHost.Description.Behaviors.Add(New AspNetCompatibilityRequirementsAttribute() With {.RequirementsMode = AspNetCompatibilityRequirementsMode.Required})
#End If
Return serviceHost
End Function ' CreateServiceHost
End Class ' DerivedFactory
これは、彼の質問の95%ほどであったAspNetCompatibilityEnabledを設定する方法にも触れません。 –