- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我正在使用 asp.net MVC。我的代码是:
var url = Url.Action(
"ConfirmEmail", "Account",
new { userId = id, code = code },
protocol: Request.Url.Scheme);
在本地主机上它返回正确的 url,即
https://localhost:44300/Account/ConfirmEmail?userId=bed34d05-2b7b-49b8-940e-0d89d4870d17&code=AQAA
但是在实时网站上它没有按预期工作。它返回的url是:
http://newtemp.apphb.com:16169/Account/ConfirmEmail?userId=7ba65316-0901-4c27-9371-588a5e945baa&code=AQAA
:16169
部分是附加的。它从哪里来以及如何删除它?
我的详细代码是:
public async Task<bool> SendMailtoConfirmEmailAddress(string id,string name,string email)
{
var user = await db.AspNetUsers.FindAsync(id);
if (user.EmailConfirmed)
{
return false;
}
try
{
var provider = new DpapiDataProtectionProvider("http://newtemp.apphb.com/");
UserManager.UserTokenProvider = new DataProtectorTokenProvider<ApplicationUser, string>(provider.Create("UserToken"))
as IUserTokenProvider<ApplicationUser, string>;
var code = await UserManager.GenerateEmailConfirmationTokenAsync(id);
var callbackUrl = Url.Action(
"ConfirmEmail", "Account",
new { userId = id, code = code },
protocol: Request.Url.Scheme);
ElectronicsController.sendEmail(email, "Welcome to dealkar.pk - Confirm Email address", "Hello " + name + "!<br/>Confirm your email address by clicking <a href=\"" + callbackUrl + "\">here</a> OR " + callbackUrl);
}
catch (Exception e)
{
string s = e.ToString();
}
return true;
}
最佳答案
Where it came from?
port is resolved from the current request 。不幸的是,Microsoft 没有考虑何时在运行非默认端口的服务器上生成 URL,并且它只会使用当前端口(无论协议(protocol)是否与当前请求相同)。
how to remove this?
您可以创建一个扩展方法来告诉 UrlHelper
使用默认端口,无论传入请求的端口如何。
此示例基于默认端口(HTTP 为 80,HTTPS 为 443)创建一个伪造的 HTTP 上下文,然后使用 UrlHelper
的新实例来解析 URL。
using System;
using System.IO;
using System.Text.RegularExpressions;
using System.Web;
using System.Web.Mvc;
using System.Web.Routing;
public static class UrlHelperExtensions
{
public static string Action(this UrlHelper helper, string actionName, string controllerName, object routeValues, string protocol, bool defaultPort)
{
return Action(helper, actionName, controllerName, routeValues, protocol, null, defaultPort);
}
public static string Action(this UrlHelper helper, string actionName, string controllerName, object routeValues, string protocol, string hostName, bool defaultPort)
{
if (!defaultPort)
{
return helper.Action(actionName, controllerName, new RouteValueDictionary(routeValues), protocol, hostName);
}
string port = "80";
if (protocol.Equals("https", StringComparison.OrdinalIgnoreCase))
{
port = "443";
}
Uri requestUrl = helper.RequestContext.HttpContext.Request.Url;
string defaultPortRequestUrl = Regex.Replace(requestUrl.ToString(), @"(?<=:)\d+?(?=/)", port);
Uri url = new Uri(new Uri(defaultPortRequestUrl, UriKind.Absolute), requestUrl.PathAndQuery);
var requestContext = GetRequestContext(url);
var urlHelper = new UrlHelper(requestContext, helper.RouteCollection);
var values = new RouteValueDictionary(routeValues);
values.Add("controller", controllerName);
values.Add("action", actionName);
return urlHelper.RouteUrl(null, values, protocol, hostName);
}
private static RequestContext GetRequestContext(Uri uri)
{
// Create a TextWriter with null stream as a backing stream
// which doesn't consume resources
using (var writer = new StreamWriter(Stream.Null))
{
var request = new HttpRequest(
filename: string.Empty,
url: uri.ToString(),
queryString: string.IsNullOrEmpty(uri.Query) ? string.Empty : uri.Query.Substring(1));
var response = new HttpResponse(writer);
var httpContext = new HttpContext(request, response);
var httpContextBase = new HttpContextWrapper(httpContext);
return new RequestContext(httpContextBase, new RouteData());
}
}
}
var url = Url.Action("ConfirmEmail", "Account",
new { userId = 123, code = 456 },
protocol: Request.Url.Scheme,
defaultPort: true);
关于asp.net-mvc - Request.Url.Scheme 未按预期工作,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36263495/
假设我拥有域 mydomain.com,并且我在服务器上有一个 Web 应用程序,网址为 http://99.99.99.99:1234/MyApplication/startpage.somethi
我正在尝试通过以下方式更新已解析的 URL: u, _ := url.Parse(s) if u.Scheme == "" { u.Scheme = "https" } if u.Path =
如何将 www.somesite.com/api(.*) 映射到 www.somesite.com/$1:9000? (我需要将/api 映射到运行 @ 端口 9000 的 Play 框架应用程序)
我有一个资源结构,如航类 > 座位 > 预订,所以预订属于某个航类的某个座位: http://example.com/jdf_3prGPS4/1/jMBDy46PbNc
我想知道以下网址是否有效。 路径中的点,在主机之后: http://www.example.com/v.b.w..com 主机中的点,作为子域的一部分: http://v.b.w..co.manufa
我有两个域 - crmpicco.co.uk 和 ayrshireminis.com - 如果我浏览到: www.crmpicco.co.uk/mini/new我希望能够重定向到 www.ayrshi
我正在尝试使用 URL 重写和应用程序请求路由来重写到外部 URL。我设置了以下规则: 在规则中,“patternToMatch”是我试
我已经安装了带有 SharePoint 和 Url Rewrite 模块的 IIS 7.0。 是以下句子还是我配置错误才能看到这个结果? Url Redirect 可以将 url 重定向到任何内部(在
我想知道,为了获得良好的 SEO,您必须在 URL 中使用自然语言。您知道字符中单词或短语的最大大小吗?例如: www.me.com/this-is-a-really-long-url.htm 我问这
有人知道在 SEO 友好 URL 中使用逗号有什么问题吗?我正在使用一些在其 SEO 友好 URL 中使用大量逗号的软件;但我 100% 肯定我见过一些程序/平台无法正确识别 URL 并在第一个逗号后
我有一个网站,我正在为所有链接使用干净的 URL。我想知道对于简短的基本 URL 与较长的描述性 URL 有何看法。 例如,如果我的网站是关于 Georgia Bulldog 足球新闻的,那么哪个网站
我正在编写一个类似于 tinyurl 的 URL 缩短器,我想知道如何跟踪已经使用我的服务缩短的 URL?例如,tinyurl 为相同的长 URL 生成相同的小 URL,而不管是谁创建的。如
我是 magento 的新手。我正在开发一个模块。为此,我有一些要显示链接的 css 和 js 文件。我目前有类似 的链接 getSkinUrl('module_tryouts/css/jquery.
我想基于 HTTP_URL 重写 URL 以重定向到不同的端口,同时保留其余的 URL 和查询字符串(如果指定)。例如, http://host/john/page.aspx 应该重定向到 http:
我遇到了以下问题: 我的 Grails (2.2.0) 应用程序具有以下 URL 映射: "/api/clientQuote/$labcode/$cliCode/$quoCode"(controlle
我有一个很长的 URL,它不适合 URL 字段。它一直在修剪。该怎么办?有没有办法增加 SharePoint 2010 中的 URL 字段字符限制? 或者解决方法来容纳长 URL。例如,以下 URL
关闭。这个问题是off-topic .它目前不接受答案。 想改进这个问题? Update the question所以它是on-topic对于堆栈溢出。 9年前关闭。 Improve this que
我们从客户以前的开发人员那里继承了相当多的 Google Apps 脚本项目。 Apps 脚本通过嵌入式小部件部署在 Google 网站 (sites.google.com) 的各个页面上。每当我们需
我正在编写一些文档,但遇到了一些词汇问题: http://www.example.com/en/public/img/logo.gif 被称为“绝对”网址,对吗? ../../public/img/l
我们从客户以前的开发人员那里继承了相当多的 Google Apps 脚本项目。 Apps 脚本通过嵌入式小部件部署在 Google 网站 (sites.google.com) 的各个页面上。每当我们需
我是一名优秀的程序员,十分优秀!