Dun*_*ken 8 iis url-rewriting self-hosting signalr arr
我有一个在端口8080上运行的自托管API.在端口80上是我的网络服务器(IIS 7.5),我的网站无法触及.我添加了一个应用程序"MyApiTestsite".现在对/ api /或/ signalr/I的所有请求都要转发到端口8080:
http://mycompany/MyApiTestsite -> untouched
http://mycompany/MyApiTestsite/signalr/* -> http://mycompany:8080/signalr/*
http://mycompany/MyApiTestsite/api/* -> http://mycompany:8080/api/*
Run Code Online (Sandbox Code Playgroud)
我已经安装了ARR(这甚至是必要的吗?)和URL Rewrite.
这是我到目前为止的规则(对于SignalR):
<rule name="Rewrite SignalR to port 8080" patternSyntax="Wildcard" stopProcessing="true">
<match url="signalr/*" />
<serverVariables>
<set name="SERVER_PORT" value="8080" />
</serverVariables>
<action type="Rewrite" url="{R:0}" appendQueryString="true" logRewrittenUrl="false" />
</rule>
Run Code Online (Sandbox Code Playgroud)
我检查了日志文件,规则得到匹配.但是,它根本不起作用:
MyApiTestsite日志:
RULE_EVALUATION_END RuleName="Rewrite SignalR to port 8080", RequestURL="MyApiTestsite/signalr/hubs", QueryString="", StopProcessing="true", Succeeded="true"
URL_REWRITE_END RequestURL="/MyApiTestsite/signalr/hubs"
GENERAL_CHILD_REQUEST_START SiteId="4", RequestURL="http://mycompany:80/MyApiTestsite/signalr/hubs", RequestVerb="GET", RecursiveLevel="1"
Run Code Online (Sandbox Code Playgroud)
更新: 我现在根据这篇文章尝试过.但是,它仍然无效.URL似乎很好,但MvcHandler接管并返回404:
URL_REWRITE_END RequestURL ="http:// mycompany:8080/signalsr/hubs"
USER_SET AuthType ="",UserName ="",SupportsIsInRole ="true"
HANDLER_CHANGED
OldHandlerName ="ExtensionlessUrlHandler-Integrated-4.0",NewHandlerName ="System.Web.Mvc.MvcHandler",NewHandlerModules ="ManagedPipelineHandler",NewHandlerScriptProcessor ="",NewHandlerType ="System.Web.Mvc.MvcHandler,System.Web.Mvc ,版本= 5.1.0.0"GENERAL_SEND_CUSTOM_ERROR HttpStatus ="404",HttpSubStatus ="4",FileNameOrURL ="404.htm"
更新2:
这是我要做的事情的照片......

更新3
这次我尝试使用Server Farms.我的网址已经改变了,但后来又改回了原来的网址:
ARR_WEBFARM_ROUTED WebFarm="mycompany API", Algorithm="LeastRequests"
HANDLER_CHANGED OldHandlerName="", NewHandlerName="ApplicationRequestRoutingHandler", NewHandlerModules="ApplicationRequestRouting", NewHandlerScriptProcessor="", NewHandlerType=""
ARR_SERVER_ROUTED RoutingReason="LoadBalancing", Server="mycompany", State="Active", TotalRequests="1", FailedRequests="0", CurrentRequests="1", BytesSent="0", BytesReceived="0", ResponseTime="0"
GENERAL_SET_REQUEST_HEADER HeaderName="Max-Forwards", HeaderValue="10", Replace="true"
GENERAL_SET_REQUEST_HEADER HeaderName="X-Forwarded-For", HeaderValue="xxx.xx.xx.xxx:52327", Replace="true"
GENERAL_SET_REQUEST_HEADER HeaderName="X-ARR-SSL", HeaderValue="", Replace="true"
GENERAL_SET_REQUEST_HEADER HeaderName="X-ARR-ClientCert", HeaderValue="", Replace="true"
GENERAL_SET_REQUEST_HEADER HeaderName="X-ARR-LOG-ID", HeaderValue="f8exxxc2-7a6d-4cf6-a3c6-ecde245a0d80", Replace="true"
GENERAL_SET_REQUEST_HEADER HeaderName="Connection", HeaderValue="", Replace="true"
//>>>>>now it gets changed back!!! Why????<<<<<<
URL_CHANGED OldUrl="http://mycompany API/signalr/hubs", NewUrl="/MyApiTestsite/signalr/hubs"
Run Code Online (Sandbox Code Playgroud)
配置以下URL 重写规则:
Requested URL: Matches the pattern
Using: Regular Expressions
Pattern: MyApiTestsite/(signalr/.*)
Action: Rewrite
Rewrite URL: http://mycompany:8080/{R:1}
Run Code Online (Sandbox Code Playgroud)
编辑:{R:1}匹配第一个捕获的正则表达式组,在这种情况下匹配(signalr/.*). 如果是这样{R:0},它就会放置匹配的整个相对 URL。有关详细信息,请参阅IIS URL 重写 {R:N} 说明。
| 归档时间: |
|
| 查看次数: |
4927 次 |
| 最近记录: |