本文整理汇总了C#中MindTouch.Dream.XUri.ChangePrefix方法的典型用法代码示例。如果您正苦于以下问题:C# XUri.ChangePrefix方法的具体用法?C# XUri.ChangePrefix怎么用?C# XUri.ChangePrefix使用的例子?那么恭喜您, 这里精选的方法代码示例或许可以为您提供帮助。您也可以进一步了解该方法所在类MindTouch.Dream.XUri
的用法示例。
在下文中一共展示了XUri.ChangePrefix方法的2个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的C#代码示例。
示例1: lock
//--- Interface Methods ---
int IPlugEndpoint.GetScoreWithNormalizedUri(XUri uri, out XUri normalized)
{
int result;
XUri prefix;
lock(_aliases) {
_aliases.TryGetValue(uri, out prefix, out result);
}
// check if we found a match
if(prefix != null) {
normalized = uri.ChangePrefix(prefix, _localMachineUri);
// if 'dream.in.uri' is not set, set it
if((normalized.GetParam(DreamInParam.URI, null) == null) && !prefix.Scheme.EqualsInvariant("local")) {
normalized = normalized.With(DreamInParam.URI, prefix.ToString());
}
} else {
normalized = null;
}
return (result > 0) ? result + Plug.BASE_ENDPOINT_SCORE : 0;
}
示例2: SubmitRequestAsync
//.........这里部分代码省略.........
publicUri = _publicUri;
} else {
// check if the request was forwarded through Apache mod_proxy
string proxyOverride = uri.GetParam(DreamInParam.HOST, null);
if(string.IsNullOrEmpty(proxyOverride)) {
proxyOverride = request.Headers.ForwardedHost;
}
string serverPath = string.Join("/", transport.Segments);
if(proxyOverride != null) {
// request used an override, append path of public-uri
serverPath = string.Join("/", _publicUri.Segments);
}
// set the uri scheme based-on the incoming scheme and the override header
string scheme = transport.Scheme;
if("On".EqualsInvariantIgnoreCase(request.Headers.FrontEndHttps ?? "")) {
scheme = Scheme.HTTPS;
}
scheme = uri.GetParam(DreamInParam.SCHEME, scheme);
// set the host port
string hostPort = proxyOverride ?? request.Headers.Host ?? uri.HostPort;
publicUri = new XUri(string.Format("{0}://{1}", scheme, hostPort)).AtPath(serverPath);
}
request.Headers.DreamPublicUri = publicUri.ToString();
}
// set host header
request.Headers.Host = publicUri.HostPort;
// convert incoming uri to local://
XUri localFeatureUri = uri.ChangePrefix(uri.WithoutPathQueryFragment(), _localMachineUri);
// check if path begins with public uri path
if((transport.Segments.Length > 0) && localFeatureUri.PathStartsWith(transport.Segments)) {
localFeatureUri = localFeatureUri.WithoutFirstSegments(transport.Segments.Length);
}
// check if the path is the application root and whether we have special behavior for that
if(localFeatureUri.Path.IfNullOrEmpty("/") == "/") {
if(!string.IsNullOrEmpty(_rootRedirect)) {
localFeatureUri = localFeatureUri.AtAbsolutePath(_rootRedirect);
} else if(IsDebugEnv) {
localFeatureUri = localFeatureUri.AtAbsolutePath("/host/services");
}
}
// find the requested feature
List<DreamFeature> features;
lock(_features) {
features = _features.Find(localFeatureUri);
}
DreamFeature feature = null;
if(features != null) {
// TODO (steveb): match the incoming mime-type to the feature's acceptable mime-types (mime-type overloading)
// match the request verb to the feature verb
foreach(DreamFeature entry in features) {
if((entry.Verb == "*") || entry.Verb.EqualsInvariant(verb)) {
feature = entry;
break;
}
}