0
我一直在這個問題上了一個多星期了。WCF Web服務MSMQ端點
我已經取得了很大的進展,但我是來這我無法跟蹤或調試問題。
我在2015年VS .NET框架4在Windows 8.1的機器上開發。
Web服務在IIS 8被託管在Windows Server 2012機器上同一個域作爲我的開發環境。
我能夠使使用的net.tcp端點到另一個Web服務的調用,併成功地獲得回報。
我相信IIS設置正確,以承載與msmq端點的Web服務,但是Web服務不會創建消息隊列,也不會在我的開發計算機上運行時創建消息隊列。
我不知道如何辨別什麼是原因。
當我運行的動態創建一個消息隊列Web服務頂嘴客戶端應用程序,它創建消息隊列,但客戶端運行作爲控制檯應用程序。
Web服務
[AuthenticationBehavior]
public class LeaseService : ILeasesService
{
[OperationBehavior(TransactionScopeRequired = true, TransactionAutoComplete = true)]
public void SaveLease(ILease lease)
{
}
[OperationBehavior(TransactionScopeRequired = true, TransactionAutoComplete = true)]
public void InsertLeaseEntries(ILeaseEntry[] entries)
{
}
}
}
Web服務主機
class Program
{
private static WebServiceHost _host;
static void Main(string[] args)
{
var queue = @".\private$\ServerLeasesQueue";
if (!MessageQueue.Exists(queue)) MessageQueue.Create(queue, true);
_host = new WebServiceHost(typeof (LeaseService),
new Uri(@"http://localhost:8080/LeaseService"));
_host.Description.Name = "Culbreath.Leases.LeaseService";
_host.Description.Behaviors.Add(new ServiceMetadataBehavior
{
HttpGetEnabled = true,
HttpGetUrl = new Uri(@"http://localhost:8080/LeaseService")
});
var netMsmqBinding = new NetMsmqBinding(NetMsmqSecurityMode.Transport);
netMsmqBinding.Security.Transport.MsmqProtectionLevel = ProtectionLevel.None;
netMsmqBinding.Security.Transport.MsmqAuthenticationMode = MsmqAuthenticationMode.None;
_host.AddServiceEndpoint(
typeof(ILeasesService),
netMsmqBinding,
new Uri(@"net.msmq://localhost/private/ServerLeasesQueue"));
_host.Open();
}
}
您能否澄清:您是否試圖通過IIS中的netMsmqBinding公開服務?爲什麼你的「網絡服務主機」是一個控制檯應用程序?這是什麼意思:*當我運行動態地創建一個消息隊列Web服務頂嘴*客戶端?暴露的服務操作全部返回無效;沒有返回類型,因此不會有「回話」。 –
您的代碼示例太長。請刪除一切這是不相關的@TomRedfern Web服務在IIS託管在Windows 2012服務器上的問題 –
。客戶端是一個控制檯應用程序。客戶端將消息發送到Web服務,但由於Web服務還沒有創建一個消息隊列時,未收到消息。 –