我正在将Web表单应用程序转换为asp.net core mvc.在我的Web表单应用程序中,有时在我设置一些响应cookie后,其他代码需要查看它们是否已设置,如果是,请访问cookie的属性(即value,Expires,Secure,http).在webforms和MVC 5中,可以迭代cookie并返回任何特定的cookie,如此(我知道的老学校)
for(int i = 0; i < cookies.Count; i++) {
if(cookies[i].Name == cookieName) {
return cookies[i];
}
}
Run Code Online (Sandbox Code Playgroud)
但是在asp.net core mvc中访问响应cookie的界面如下所示:
基于此接口,我没有看到检查响应cookie是否存在并获取其属性的方法.但是还有一些方法可以做到吗?
在一个动作方法中,我尝试在响应对象上设置两个cookie,然后立即尝试访问它们.但intellisense没有显示允许我访问它们的任何方法,属性或索引器:
有一会儿,我想也许我可以使用Response.Cookies.ToString();并解析信息来查找我的cookie信息,但是,唉,该ToString()调用返回"Microsoft.AspNet.Http.Internal.ResponseCookies",因为该对象不会覆盖默认实现.
只是为了好玩,我还检查了GitHub的当前dev分支,看看自RC1以来接口是否已经改变,但它没有.因此,给定此接口,如何检查响应cookie的存在并获取其属性?我曾经考虑过通过响应头集合进行攻击,但这看起来很蹩脚.
我目前正在使用ASP.NET Core MVC RC2,它假设支持从Core MVC Web应用程序项目引用完整的框架库项目.但我似乎无法使其发挥作用.
我有一个现有的完整框架库项目,我想与新的Core MVC Web应用程序项目一起使用.但是当我尝试添加对库项目的引用时,我得到一个错误,指出它的目标框架与Web应用程序的目标框架不兼容.
为了尝试简化问题,我创建了一个新的Core MVC Web应用程序和一个新的Windows代码库,并尝试将Web应用程序项目的引用添加到库的项目中,并得到相同的错误消息.我已经搜索了堆栈溢出,我确实发现这个问题看起来非常相关:如何使用旧的第三方依赖项构建net46框架的ASP.NET Core RC2应用程序,但我无法使用那里的信息来解决我的问题.
以下是重现此问题的步骤:
我在Visual Studio 2015中基于"Web应用程序"模板创建了一个带有".NET Core""ASP.NET Core Web Application"项目的解决方案.
然后我在解决方案中添加了一个新的"Windows""类库"项目.
所以在这一点上,解决方案看起来像这样:
现在,当我尝试使用visual studio将Core MVC Web应用程序的引用添加到Full Framework库时,我收到一条错误消息,指出"ExampleLib的目标框架与当前项目ExampleWebApplicaiton中的目标不兼容.":
这个错误看起来相当自我解释,似乎要我改变Web应用程序所针对的框架,这样它就像库一样,这非常有意义.问题是我找不到关于如何做到这一点的文档,智能感知并没有特别有用.
我怀疑我需要project.json为Web应用程序更改以下文件之一:
"dependencies": {
"Microsoft.NETCore.App": {
"version": "1.0.0-rc2-3002702",
"type": "platform"
},
Run Code Online (Sandbox Code Playgroud)
要么
"frameworks": {
"netcoreapp1.0": {
"imports": [
"dotnet5.6",
"dnxcore50",
"portable-net45+win8"
]
}
},
Run Code Online (Sandbox Code Playgroud)
如何为Core MVC Web应用程序而不是.NETCoreApp指定.NETFramework版本4.6?
如果我有一个控制器,其操作方法使用基于属性的路由并像这样声明它,那么一切都很好:
[HttpGet]
[Route("/dev/info/{*somevalue}")]
public IActionResult Get(string somevalue) {
return View();
}
Run Code Online (Sandbox Code Playgroud)
我可以路由到上述操作方法,例如通过指定以/dev/info/hello-world或结尾的 url/dev/info/new-world
然而,我的业务要求是有一个如下所示的网址:/dev/hello-world/info或/dev/new-world/info 并且有无数这样的网址,它们都需要路由到控制器上的相同操作方法。
我想在操作方法上设置基于属性的路由,如下所示:
[HttpGet]
[Route("/dev/{*somevalue}/info/")]
public IActionResult Get(string somevalue) {
return View();
}
Run Code Online (Sandbox Code Playgroud)
但是当我这样做时,网络项目运行后我就会收到以下错误:
处理请求时发生未处理的异常。RouteCreationException:属性路由信息发生以下错误:
对于操作:“App.SomeController.Get (1-wwwSomeProject)”错误:包罗万象的参数只能显示为路由模板的最后一段。参数名称:routeTemplate Microsoft.AspNetCore.Mvc.Internal.AttributeRoute.GetRouteInfos(IReadOnlyList actions)
必须有某种方法来解决此错误。知道办法吗?
在早期版本的Asp.Net会话中,可以在任何页面中访问,如静态变量使用
System.Web.HttpContext.Current.Session["key"]
Run Code Online (Sandbox Code Playgroud)
在Asp.Net Core中,如何访问通过控制器调用的不同类中的会话,而不将会话属性作为所有类的构造函数中的附加参数传递
我正在使用ASP.NET MVC CORE.我已经实现了自己的ViewLocationExpander,这样我就可以按照我想要的方式构建项目,并将我的视图放在我喜欢的位置.
这是通过实现一个继承的类来实现的,IViewLocationExpander并且大多数工作都在以下方法中进行:
ExpandViewLocations(ViewLocationExpanderContext context, IEnumerable<string> viewLocations)
Run Code Online (Sandbox Code Playgroud)
一切都工作得很好,但界面定义了第二种方法,我不知道如何正确实现:
PopulateValues(ViewLocationExpanderContext context)
Run Code Online (Sandbox Code Playgroud)
我已经在互联网上阅读了关于这个界面的文章,但没有人真正提供过关于这个方法究竟是什么的更多信息,而不是说有关它如何帮助缓存的模糊事物.
如果有人可以解释框架如何使用这种方法以及如何适当地使用它来帮助缓存(如果它确实是它的用途),我真的很感激.
在RC1中,你可以做BaseViewComponent,然后继承它,并使用它,而像baseController任何问题,但我的项目迁移到RC2后,我收到这个错误可能:找不到"调用"或"InvokeAsync"方法的视图组件"ForumSystem. Web.ViewComponents.BaseViewComponent".
在rc2中有没有办法做到这一点?
简单的菜鸟问题:-)
我即将投入使用一个小型.NET核心应用程序主机,该主机托管在digitalocean的Droplet中.我一直使用IIS托管网站,但我想转移到Linux发行版并使用nginx作为反向代理.
我的问题是标题说:-)是否每次都需要像IIS一样回收"应用程序池"?如果没有,这是否意味着应用程序从Kestrel加载是在线直到它关闭?
最好的问候Jens
我正在将面向完整框架的 Asp.Net Core 2.2 网站转换为面向 .Net Core 3.1 的 Asp.Net Core 3.1 应用程序。我有点不清楚与 System.Drawing 相关的依赖关系以及如何实现它们。
我的项目使用 System.Drawing,在 Asp.Net Core 3.1 下编译时出现此错误,提示我添加了对以下内容的引用System.Drawing.Common.dll:
错误 CS1069:在命名空间“System.Drawing”中找不到类型名称“Image”。此类型已转发到程序集“System.Drawing.Common, Version=4.0.2.0, Culture=neutral, PublicKeyToken=cc7b13ffcd2ddd51” 考虑添加对该程序集的引用。1-wwwGiftOasis3 C:\Users\Ron\source\repos\wwwGiftOasis3\wwwGiftOasis3\site\seller\profile\about\s-photos.cs
在 Visual Studio 中,我没有看到直接向裸机添加引用的方法,System.Drawing.Common.dll因此我假设我应该通过 NuGet 添加引用。
在 NuGet 中,我看到一个System.Drawing.Common看起来像我想要的包,但我不清楚我的项目是否满足依赖项:
我的项目显示了这些依赖项:
所以我有几个与这一切相关的问题:
1) 我的项目依赖于 Framework 的事实是否Microsoft.NETCore.App满足 NuGet 包的Microsoft.NETCore.Platforms依赖?
2) 我打算只在 Windows 上运行这个 Asp.Net Core 3.1 网站这一事实是否满足 NuGet 包的 Microsoft.Win32.SystemEvents依赖性?
在Asp.Net Core中,如果创建了一个自定义的中间件并将其放置在自己的类中,那么如何IHostingEnvironment从中间件内部访问?
例如,在我下面的课程中,我认为我可以注入IHostingEnvironmentcontstructor,但它始终为null.有关如何访问的任何其他想法IHostingEnvironment?
public class ForceHttps {
private readonly RequestDelegate _next;
private readonly IHostingEnvironment _env;
/// <summary>
/// This approach to getting access to IHostingEnvironment
/// doesn't work. It's always null
/// </summary>
/// <param name="next"></param>
/// <param name="env"></param>
public ForceHttps(RequestDelegate next, IHostingEnvironment env) {
_next = next;
}
public async Task Invoke(HttpContext context) {
string sslPort = "";
HttpRequest request = context.Request;
if(_env.IsDevelopment()) {
sslPort = ":44376";
}
if(request.IsHttps == false) {
context.Response.Redirect("https://" …Run Code Online (Sandbox Code Playgroud) 我有两个问题:
1.什么是Viewcontext以及它的优点是什么?
2.为什么我们必须在标签助手中使用它?
实际上我是初学者,并遵循adam freeman的"Pro ASP.NET Core MVC,第6版",他在这里制作了一个taghelper类,他使用了
[ViewContext]
[HtmlAttributeNotBound]
public ViewContext ViewContext { get; set; }
Run Code Online (Sandbox Code Playgroud)
他没有解释上面这段代码为什么他在这些属性的方括号中使用这些属性.如果有的话,请分享描述这些类型属性的链接
asp.net-mvc viewcontext asp.net-core-mvc asp.net-core-tag-helpers
asp.net-core ×7
asp.net ×2
asp.net-mvc ×2
c# ×1
iis ×1
nginx ×1
nuget ×1
session ×1
viewcontext ×1