标签: asp.net-core-mvc

何时在MVC 6中的视图中使用@await Html.PartialAsync

我在Scott Hanselman的博客中注意到他在使用.Net 5(MVC 6)时在他的视图中使用了以下代码:

@await Html.PartialAsync("_LoginPartial")
Run Code Online (Sandbox Code Playgroud)

@Html.Partial("_LoginPartial")
Run Code Online (Sandbox Code Playgroud)

有没有关于何时应该使用哪一个的文件?

razor asp.net-core-mvc asp.net-core

37
推荐指数
3
解决办法
3万
查看次数

ASP.NET Core中的SQLite与EntityFrameworkCore

如何使用EntityFramework 7在ASP.NET Core Web应用程序中添加和使用SQLite数据库?

当我听到它并创建了我的第一个Web应用程序时,我潜入了ASP.NET Core,我突然想要存储一堆数据,而SQLite似乎是明显的选择.
因为我希望它与我的应用程序保持一致,所以要保持它的轻量级,简单并避免设置单独的数据库.

那么如何在ASP.NET Core中创建SQLite数据库呢?

  • ASP.NET Core - 现在以前称为ASP.NET MVC 6
  • EntityFramework Core - 现在以前称为EntityFramework 7

c# sqlite asp.net-mvc entity-framework-core asp.net-core-mvc

37
推荐指数
3
解决办法
4万
查看次数

在ASP MVC 6中为同一个控制器或操作分配多个路由

题:

有没有办法将两个不同的路由(带参数)分配给ASP.NET MVC 6应用程序中的同一个控制器?

我试过了:

我尝试使用多个路由属性到控制器类,也尝试使用单个操作,但没有用.

笔记:

  • 我使用的是ASP.NET Core 1.0 RC1.

  • 我想这样做的原因是,我希望api与使用旧网址的旧版移动应用兼容.

例:

[Produces("application/json")]
[Route("api/v2/Log")]
/// The old route is "api/LogFile" which I want to be still valid for this controller.
public class LogController : Controller {
    [HttpGet("{id}", Name = "download")]
    public IActionResult GetFile([FromRoute] Guid id) 
    {
        // ...
    }
}
Run Code Online (Sandbox Code Playgroud)

在上面的示例中:api/LogFile/{some-guid}是旧路由,api/v2/log/download/{some-guid}是新路由.我需要两个路由调用相同的动作.

asp.net asp.net-core-mvc asp.net-core

35
推荐指数
1
解决办法
3万
查看次数

在.NET Core中是否有任何AssemblyBuilder.DefineDynamicAssembly的替换?

如何将以下代码移植到.Net Core:

AppDomain.CurrentDomain.DefineDynamicAssembly(
                new AssemblyName(
                    Guid.NewGuid().ToString()),
                    AssemblyBuilderAccess.RunAndSave);
Run Code Online (Sandbox Code Playgroud)

可能吗?

asp.net-core-mvc .net-core asp.net-core asp.net-core-1.0

35
推荐指数
1
解决办法
9418
查看次数

访问Asp.Net Core App中的Web.config设置?

我知道asp.net核心有一个非常灵活的新配置系统,这很棒.但是我喜欢从.net 4.x开始的基于web.config的配置系统.例如,可以将注释放在web.config文件中,因为它是一个xml文件.对我而言,值得坚持使用xml,而不是采用闪亮的新json方法.[ 更新:我现在明白json方法也支持文件中的注释.]

因此,如果我有一个针对完整框架的Asp.Net核心Web项目,我似乎应该可以使用基于web.config的System.Configuration.ConfigurationManager.AppSettings[key]方法来获取设置.

但是当我尝试时,该值总是返回null(至少在使用VS2015的IIS Express时).

它应该工作正常吗?关于我可能会看到什么的任何想法?

Web.config文件

<configuration>
    <appSettings>
        <add key="SomeSetting" value="true"/>
    </appSettings>

    <system.webServer>
        <handlers>
            <add name="aspNetCore" path="*" verb="*" modules="AspNetCoreModule" resourceType="Unspecified"/>
        </handlers>

        <aspNetCore processPath="%LAUNCHER_PATH%" arguments="%LAUNCHER_ARGS%" stdoutLogEnabled="false" stdoutLogFile=".\logs\stdout" forwardWindowsAuthToken="false"/>
     </system.webServer>
</configuration>
Run Code Online (Sandbox Code Playgroud)

代码访问设置:

string key = "SomeSetting";
string setting = ConfigurationManager.AppSettings[key];
if (setting == null)
       throw new Exception("The required configuration key " + key + " is missing. ");
Run Code Online (Sandbox Code Playgroud)

更新
经过更多的研究,我现在明白为什么它不起作用,但我还没有找到解决方法.根本原因似乎是ConfigurationManager在不同的文件中而不是在web.config中查找配置信息.

这可以通过查看AppDomain.CurrentDomain.SetupInformation.ConfigurationFile财产来看出.在我的情况下,而不是指向website_folder\web.config它,而是指向website_folder\bin\Debug\net461\win7-x64\wwwGiftOasisResponsive.exe.Configwebsite_folder是包含我的网站的文件夹的路径.

文档和intellisense说AppDomain.CurrentDomain.SetupInformation.ConfigurationFile是一个可设置的属性,但当我尝试时,我发现它设置它不会改变它的值.很奇怪.

所以,虽然我现在看到问题是什么,但我似乎无法找到解决问题的方法.

asp.net asp.net-core-mvc asp.net-core-1.0

35
推荐指数
2
解决办法
5万
查看次数

使用Asp.net核心创建另一个Web api的代理

我正在开发一个ASP.Net Core Web应用程序,我需要为另一个(外部)Web服务创建一种"身份验证代理".

我的身份验证代理的意思是我将通过我的Web应用程序的特定路径接收请求,并且必须检查这些请求的标头以获取我之前发布的身份验证令牌,然后将所有请求重定向到相同的请求字符串/内容到我的应用程序将通过HTTP Basic身份验证进行身份验证的外部Web API.

这是伪代码的整个过程

  • 客户端通过对我之前发送给他的唯一URL进行POST来请求令牌
  • 我的应用程序向他发送了一个唯一的令牌以响应此POST
  • 客户端向我的应用程序的特定URL发出GET请求,/extapi并在HTTP标头中添加auth-token
  • 我的应用程序获取请求,检查auth-token是否存在且有效
  • 我的应用程序对外部Web API执行相同的请求,并使用BASIC身份验证对请求进行身份验证
  • 我的应用程序从请求中接收结果并将其发送回客户端

这就是我现在所拥有的.它似乎工作正常,但我想知道它是否真的应该这样做,或者是否有更优雅或更好的解决方案?从长远来看,该解决方案是否会为扩展应用程序带来问题?

[HttpGet]
public async Task GetStatement()
{
    //TODO check for token presence and reject if issue

    var queryString = Request.QueryString;
    var response = await _httpClient.GetAsync(queryString.Value);
    var content = await response.Content.ReadAsStringAsync();

    Response.StatusCode = (int)response.StatusCode;
    Response.ContentType = response.Content.Headers.ContentType.ToString();
    Response.ContentLength = response.Content.Headers.ContentLength;

    await Response.WriteAsync(content);
}

[HttpPost]
public async Task PostStatement()
{
    using (var streamContent = new StreamContent(Request.Body))
    {
        //TODO check for token presence and reject if issue …
Run Code Online (Sandbox Code Playgroud)

c# asp.net asp.net-core-mvc asp.net-core-webapi

35
推荐指数
7
解决办法
4万
查看次数

在ASP.NET Core中检测到自引用循环

当我尝试使用ASP.NET Core Newsoft JSON.NET序列化某些域对象时,它会抛出异常,因为它正在检测自引用循环.

在ASP.NET 4中,我们以这种方式全局修复它: JSON.NET错误检测到类型的自引用循环

我们如何在ASP.NET Core中解决这个问题?

json.net asp.net-core-mvc asp.net-core

34
推荐指数
1
解决办法
3万
查看次数

ASP.NET Core MVC控制器在单独的程序集中

我正在使用ASP.NET MVC Core RC-2.我有一个针对完整.NET框架的Web项目.我在解决方案中也有一个单独的类库,也是针对完整框架的.

在类库中,我有一个控制器,标有路由属性.我从Web项目中引用了类库.该程序集引用了nuget包Microsoft.AspNetCore.Mvc v. 1.0.0-rc2-final.

我的理解是这个外部控制器会被自动发现,例如 http://www.strathweb.com/2015/04/asp-net-mvc-6-discovers-controllers/

然而,这对我不起作用 - 我浏览到路由的URL,我得到一个空白页面,它没有命中我的控制器断点.

任何想法如何让这个工作?

有趣的是,它似乎适用于针对.NET Core Framework的Web项目,引用了一个同样面向.NET Core的类库.但不是针对完整框架的Web项目,引用标准的.NET类库.

注意:这是MVC Core,它应该支持这种情况,而不需要任何MVC <= 4路由覆盖.

asp.net-core-mvc asp.net-core-1.0

34
推荐指数
2
解决办法
2万
查看次数

如何使用AddMvcCore()实现"纯"ASP.NET Core Web API

我见过很多使用默认AddMvc()服务的ASP.NET Core Web API项目,但没有意识到AddMvcCore()由于对服务的控制,使用是一种优越的选择.

究竟如何实现通过使用ASP.NET核心的Web API AddMvcCore()它为什么好?

c# asp.net-core-mvc asp.net-core asp.net-core-webapi

34
推荐指数
1
解决办法
4838
查看次数

如何在ASP.NET Core MVC中启用跨源请求(CORS)

我想在使用ASP.NET Core MVC构建的API上启用CORS,但所有当前文档都引用该框架的早期版本.

c# cors asp.net-core-mvc asp.net-core

33
推荐指数
3
解决办法
2万
查看次数