我有一个Web应用程序,它由两部分组成,第一部分位于IIS虚拟目录MainFolder/RazorFolder
中,第二部分位于虚拟目录MainFolder/Default.aspx
中。第二个应用程序是带有Razor Pages的.Net Core Web Application。我有一个页面MainFolder/RazorFolder/MyRazorPage
和一个页面default.aspx
。
当我从MyRazorPage
转到Response.Redirect("RazorFolder/MyRazorPage")
时,我使用
return Redirect("http://localhost/MainFolder/Default.aspx");
但我不知道如何取回。唯一的工作方式是(在行动方法中)
return Redirect("~/Default.aspx");
仅在我的测试环境中有效。
其他尝试:
http://localhost/MainFolder/RazorFolder/Default.aspx
重定向到Url.Content("~/Default.aspx")
"/MainFolder/RazorFolder/Default.aspx"
返回@Href("../default.aspx")
Hopefull(见ResolveUrl/ResolveClientUrl equivalents for Asp.Net Razor? )
"../default.aspx"
返回apply plugin: 'com.android.application'
android {
compileSdkVersion 'android-P'
defaultConfig {
applicationId "com.example.johng.assosfood"
minSdkVersion 15
targetSdkVersion 28
versionCode 1
versionName "1.0"
testInstrumentationRunner "android.support.test.runner.AndroidJUnitRunner"
vectorDrawables.useSupportLibrary = true
}
buildTypes {
release {
minifyEnabled false
proguardFiles getDefaultProguardFile('proguard-android.txt'),'proguard-rules.pro'
}
}
}
dependencies {
implementation fileTree(dir: 'libs', include: ['*.jar'])
implementation 'com.android.support:appcompat-v7:28.0.0-alpha1'
implementation 'com.android.support.constraint:constraint-layout:1.1.0'
implementation 'com.android.support:design:28.0.0-alpha1'
implementation 'com.android.support:support-vector-drawable:28.0.0-alpha1'
implementation 'com.android.support:support-v4:28.0.0-alpha1'
implementation 'com.android.support:recyclerview-v7:28.0.0-alpha1'
testImplementation 'junit:junit:4.12'
androidTestImplementation 'com.android.support.test:runner:1.0.2'
androidTestImplementation 'com.android.support.test.espresso:espresso-core:3.0.2'
implementation 'com.google.firebase:firebase-core:16.0.0'
implementation 'com.google.firebase:firebase-auth:16.0.1'
implementation 'com.google.android.gms:play-services-auth:15.0.1'
implementation 'com.google.firebase:firebase-database:16.0.1'
implementation 'com.aurelhubert:ahbottomnavigation:2.1.0'
implementation 'com.google.android.gms:play-services-location:15.0.1'
}
apply plugin: 'com.google.gms.google-services'
所以我要么需要能够重定向到父虚拟目录,要么获取整页URL来解析它。或者我应该从webforms应用程序中走私(羞耻)返回地址?
答案 0 :(得分:0)
似乎没有允许使用双点(/ ..)语法的方法。因此,有必要获取绝对URL,对其进行解析,删除不需要的部分并重新构建。
允许完成任务的方法位于Microsoft.AspNetCore.Http.Extensions内核中。
Request..GetDisplayUrl()
UriHelper.FromAbsolute
UriHelper.BuildAbsolute
因此,完整的扩展方法(请注意,参数parentRelativeUri必须以'/'开头):
public static string GetParentUri(this HttpRequest request, string parentRelativeUri)
{
string scheme;
HostString host;
PathString path;
QueryString query;
FragmentString fragment;
UriHelper.FromAbsolute(request.GetDisplayUrl(), out scheme, out host, out path, out query, out fragment);
var pathBase = request.PathBase.ToString();
return UriHelper.BuildAbsolute(scheme, host,
pathBase.Substring(0, pathBase.LastIndexOf("/")),
parentRelativeUri);
}
最后,重定向到父级是:
return Redirect(Request.GetParentUri("/Default.aspx"));