0
我已經停止在IIS中的網站,在Web.config中做了一個改變,但該死的東西不斷寫我的日誌事件到我的數據庫!我發現的唯一解決方案是完全重新啓動IIS。這不是一個很好的解決方案,因爲那時我的所有網站都必須停止/重新啓動。如何停止WCF Web服務?
UPDATE
我已經做了一些挖四周,發現該服務使用的服務工廠。這是全班同學。
/// <summary>
/// Derive from this class to create a duplex Service Factory to use in an .svc file
/// </summary>
/// <typeparam name="T">The Duplex Service type (typically derived from DuplexService)</typeparam>
public abstract class DuplexServiceFactory<T> : ServiceHostFactoryBase where T : IUniversalDuplexContract, new()
{
T serviceInstance = new T();
/// <summary>
/// This method is called by WCF when it needs to construct the service.
/// Typically this should not be overridden further.
/// </summary>
public override ServiceHostBase CreateServiceHost(string constructorString, Uri[] baseAddresses)
{
ServiceHost service = new ServiceHost(serviceInstance, baseAddresses[ 0 ]);
CustomBinding binding = new CustomBinding(
new PollingDuplexBindingElement(),
new BinaryMessageEncodingBindingElement(),
new HttpTransportBindingElement()
);
service.Description.Behaviors.Add(new ServiceMetadataBehavior());
service.AddServiceEndpoint(typeof(IUniversalDuplexContract), binding, "");
service.AddServiceEndpoint(typeof(IMetadataExchange), MetadataExchangeBindings.CreateMexHttpBinding(), "mex");
return service;
}
}
這只是返回一個新的服務實例,但至於誰在撥打電話,我不知道。我的SVC文件指向這個類作爲工廠。線索在這裏結束,但我不明白整個過程本身在哪裏運行。
IIS是否在許多進程或AppDomain中運行? – kenny 2010-03-26 19:51:29
我有一個通過雙面信息連接的Silverlight客戶端。我假定Web服務實例已連接到該網站。我如何檢測服務在哪個進程下運行?也有可能改變這個過程嗎? – Matt 2010-03-26 19:55:00
@Matt:WCF服務可以自行託管。他們幾乎可以在任何類型的過程中運行。您必須知道該服務是在IIS中託管還是在單獨的進程中(可能位於Windows服務中)託管。 – 2010-03-26 20:01:43