IIS 应用程序初始化模块向本地主机发送请求



我有一个使用 MSMQ 的 WCF 服务,托管在 IIS 中。在浏览器中命中服务的 SVC 页面的 URL 之前,服务不会启动并从队列中读取消息,这在部署和应用程序池回收后会出现问题。为了解决这个问题,我安装了IIS应用程序初始化模块,该模块将向Web.config中指定的页面发送一个虚假请求,如下所示:

<system.webServer>
  <applicationInitialization remapManagedRequestsTo="Startup.htm" skipManagedModules="true" >
    <add initializationPage="/MyService.svc" />
  </applicationInitialization>
</system.webServer>

我遇到的问题是,当我的网站绑定到另一个域时,它会命中本地主机,所以我看到此错误:

虚拟主机无法处理请求。 发件人信息: System.ServiceModel.Activation.HostedHttpRequestAsyncResult/42715336 异常:系统.服务模型.服务激活异常:无协议 绑定匹配给定的地址"http://localhost/MyService.svc"。 协议绑定在 IIS 或 WAS 中的站点级别配置 配置。--->系统无效操作异常:无协议 绑定匹配给定的地址"http://localhost/MyService.svc"。 协议绑定在 IIS 或 WAS 中的站点级别配置 配置。

任何想法如何解决这个问题?

我已经通过连接到EMS服务器的SVN服务完成了此操作,因此它应该可以工作。 如果它没有创建一个 ASPX 页面,该页面执行类似于以下内容的操作,甚至可以执行您的服务。

<%@ Page aspcompat=true Language="VBScript"  %>

Dim objSvrHTTP
Dim PostData
Dim WebName
Dim SoapAction
    SoapAction = "Your Soap Action"
WebName = Request.URL.Host & ":" & Request.URL.Port

 objSvrHTTP = Server.CreateObject("Msxml2.ServerXMLHTTP")
 PostData = "Soap Post XML (Recoreded probably)"
objSvrHTTP.open("POST", "http://" & WebName & "/path/SVCFile.svc", false)
objSvrHTTP.setRequestHeader("Content-Type", "text/xml" )
' set SOAPAction as appropriate for the operation '
 objSvrHTTP.setRequestHeader("SOAPAction", SoapAction )
objSvrHTTP.Send(cstr(PostData))
dim serviceResponse
dim ExpectedResponse 
    ExpectedResponse = "asdf"
serviceResponse = objSvrHTTP.responseText 
if (serviceResponse <> ExpectedResponse) then
    Response.Write("The Service Didn't return false and should have.  it returned: " )
    Response.Write(serviceResponse)
else
    Response.Write("OK")
end if

最新更新