在 Visual Studio 2022 中创建新的 Blazor WebAssembly 应用程序时,有一个“ASP.NET Core 托管”选项(带有无用的工具提示)。
如果您勾选此项而不是解决方案中的 1 个 WASM 项目,则有 3 个,客户端(WASM)、共享和服务器。
尽管 Blazor Server 应用程序是启动项目,但它没有页面。当您运行它时,它会调用 WASM Blazor 客户端应用程序。
我找不到这样做的目的是什么的解释?如果我将 WASM 应用程序部署到 IIS 服务器,它无需服务器应用程序即可正常运行。
请注意,我并不是在问 Blazor 服务器(在服务器上运行的服务器端代码,将 HTML 发送到客户端)和 Blazor 客户端 WASM(编译到在浏览器中运行的 WebAssembly 的 C# 代码)之间的区别。我知道这个。
我问的是,如果您打算创建 WASM 应用程序,为什么需要在具有 Blazor WASM 应用程序的解决方案中使用 Blazor 服务器应用程序。
我找不到这个问题的直接答案。要么这篇文章没有回答这个问题,要么我遗漏了一些东西: ASP.NET Core 托管和服务器端 Blazor 之间到底有什么区别?
我找不到其他东西了。
那么 Blazor Server 应用程序的目的是什么,为什么它首先运行然后调用 WASM 应用程序。另外,您将如何主持?
谢谢。
更新
我知道 WASM 应用程序只是客户端,您需要连接一个 Web API 项目才能从 Web 服务器提取数据。
这个“.net Core Hosted”模板是否做了一些我自己无法通过使用 WASM 项目创建解决方案来完成的事情 - 然后添加一个 Web …
我正在寻找在.net Core 2 MVC应用程序中的appsettings.json中存储连接字符串的最佳实践方法(就像你在MVC 5中的web.config中所做的那样).
我想使用Dapper而不是EF(我发现了许多EF示例).
像这样的东西:
{
"ConnectionStrings": {
"myDatabase": "Server=.;Database=myDatabase;Trusted_Connection=true;"
},
"Logging": {
"IncludeScopes": false,
"LogLevel": {
"Default": "Warning"
}
}
}
Run Code Online (Sandbox Code Playgroud)
当然网上有很多例子吗?我无法找到.net core 2.0.
在1和2之间有一些变化,我想确保我使用的是第2版最佳实践.
我发现了这个 - 但似乎是.net核心1: Visual Studio 2017 - MVC核心 - 第05部分 - 来自appsettings.json的连接字符串
这使用键值对appsettings - 而不是连接字符串: 在ASP.NET Core 2.0中读取AppSettings
再次,目前还不清楚这是.net Core 1还是2:Net Core Connection String Dapper visual studio 2017
我正在开发Visual Studio 2012 Express中的代码第一个Web应用程序.
我在web.config中使用此连接字符串:
<add name="myContext" connectionString="Data Source=.;Integrated Security=True;Initial Catalog=cityKingMVC4" providerName="System.Data.SqlClient" />
Run Code Online (Sandbox Code Playgroud)
我正在使用SimpleMembership.
我试图从Filters/InitializeSimpleMembershipAttribute.cs中为1个管理员提供种子:...
WebSecurity.InitializeDatabaseConnection("myContext", "Users", "UserId", "Email", autoCreateTables: true);
// A: Create Admin user
if (!WebSecurity.ConfirmAccount("admin@mydom.com"))
{
WebSecurity.CreateUserAndAccount("admin@mydom.com", "password");
}
// B: Create admin role if not exist
if (!Roles.RoleExists("Administrator"))
{
Roles.CreateRole("Administrator");
Roles.AddUserToRole("admin@mydom.com", "Administrator");
}
Run Code Online (Sandbox Code Playgroud)
如果我评论A&B它不会崩溃.如果我不这样做:"WebSecurity.InitializeDatabaseConnection"方法只能被调用一次.
如果我调试并在'WebSecurity.InitializeDatabaseConnection'上放置一个断点 - 它只调用一次,并且没有其他代码在任何地方调用WebSecurity.InitializeDatabaseConnection.
如果我调试 - 它在文件中较高的另一行崩溃(标准的SimpleAuthentication文件):LazyInitializer.EnsureInitialized(ref _initializer,ref _isInitialized,ref _initializerLock);
出现此错误:调用目标引发了异常.
堆栈跟踪:
[InvalidOperationException: The "WebSecurity.InitializeDatabaseConnection" method can be called only once.]
WebMatrix.WebData.WebSecurity.InitializeMembershipProvider(SimpleMembershipProvider simpleMembership, DatabaseConnectionInfo connect, String userTableName, String userIdColumn, String userNameColumn, Boolean createTables) …Run Code Online (Sandbox Code Playgroud) 我们有一个网站 - 一切正常,但网页字体在页面加载前瞬间闪烁.
这似乎不会发生在其他网站上,我看不出任何差异.
我们使用fonts.com字体.
我在谷歌上找到的所有内容都是Firefox的问题 - 但这种情况在我所有的浏览器中都会发生.
例如 http://lpff.niico.co.uk/About/Who-We-Are/Our-People
有没有明显我错过的东西?我怎样才能解决这个问题?
我有一个ASP.NET MVC网站,它正在调用Web API Web服务.
这些调用正在运行并返回200 OK - 两者都调用本地计算机上的Web服务和Web服务器上的Web服务.
我有Fiddler运行,但它没有看到这些调用 - 只调用MVC网站(反过来调用Web服务).
如何查看实际的Web服务调用?
这应该是正常的吗?特别是对基于Web的Web服务.
我已停止引用http://localhost并使用MACHINENAME - 正如某些SO帖子中所建议的那样.但这没有用.
我正在使用HttpClient来调用它:
using (var client = new HttpClient())
{
var byteArray = Encoding.ASCII.GetBytes(username + ":" + password);
client.DefaultRequestHeaders.Authorization = new AuthenticationHeaderValue("Basic", Convert.ToBase64String(byteArray));
client.BaseAddress = new Uri("http://MACHINENAME");
client.DefaultRequestHeaders.Accept.Clear();
client.DefaultRequestHeaders.Accept.Add(new MediaTypeWithQualityHeaderValue("application/json"));
var response = await client.PutAsJsonAsync("api/path", custImp);
}
Run Code Online (Sandbox Code Playgroud)
如何在Fiddler中查看Web服务调用?
我们都知道连接字符串会导致效率问题,特别是在循环中.我被教导用来StringBuilder防止这些问题.
所以这:
str += someotherstring
Run Code Online (Sandbox Code Playgroud)
变成这样:
StringBuilder sb = new StringBuilder();
sb.AppendLine(someotherstring);
Run Code Online (Sandbox Code Playgroud)
但我的理解是.NET框架3.5及更高版本中的CLR足够智能,可以为这两种方法输出相同的IL.那么我是否应该在我的团队代码评论中强制执行stringbuilder?
编辑:我认为Servy在评论中点头:
在连接编译时已知的许多字符串时就是这种情况.因此,当在编译时连接多个字符串时,不需要使用SB.当在编译时连接许多未知的字符串时,它不能这样做
我想使用Dapper.net从表中返回最大ID
var x = connection.Query<int>("SELECT max(val) FROM info").FirstOrDefault();
Run Code Online (Sandbox Code Playgroud)
这是有效的 - 除非没有行然后我得到一个
你调用的对象是空的.
不应该'OrDefault'意味着当没有记录时它会返回0吗?
如何返回0 - 或一些非空值以防止崩溃.
谢谢
我有一个 ASP.net MVC Core 2(如果需要可以升级到 3)Web 应用程序。
有几个不同的类别,房东、租户、承包商 - 他们每个都有一个地址对象和其他不同的属性。
我有一个部分视图,它从每个视图传递地址对象。
<partial name="_AddressPartial" , model="@Model" />
Run Code Online (Sandbox Code Playgroud)
这很好用。但是,当发布表单时,每个地址字段都是平面发布的,因为地址的名称类似于“Street”,而不是“Address.Street” - 因为地址模型被传递给部分。因此模型绑定器正在寻找“街道”等,而不是作为地址对象的一部分。
我可以从部分所在的每个页面传递对象,并添加前缀“地址”。每个字段名称,但房东、承包商、租户等都是不同的类别,所以我需要每页不同的部分,这违背了这一点。
我也许可以使用带有 Address 的基类,然后从中派生所有其他类,并将基类绑定到部分?但这似乎只是为了部分工作而太过分了。
我可以将 Address 对象平铺到每个 ViewModel 中 - 这会在写入数据库时产生更多的工作(你不能只向 Dapper 传递一个 Address 模型,你必须手动编写一些 SQL 来进行更新),并创建大量重复。
如何在所有页面之间重复使用部分内容,保持干燥,并避免列出的问题。
我用谷歌搜索了一下,上面是我能找到的全部内容。我错过了什么吗?
asp.net-core-mvc asp.net-core asp.net-core-2.0 asp.net-core-mvc-2.0 asp.net-core-3.1
我正在使用 Visual Studio 2022 社区。
例如,如果我右键单击某些代码中的类名并“转到定义”,它将在右侧而不是左侧打开文件的选项卡(就像我双击同一文件来打开它一样)。
选项卡上有一个按钮,上面写着“保持选项卡打开”,这意味着它可能会随时自动关闭;尽管从来没有。
如何在类上“转到定义”,只需像平常一样在左侧打开文件,就像双击文件一样?
我进行了大量搜索,甚至找不到任何有关正在发生的事情的参考资料。
谢谢
在 VS 2019 中调试 Blazor 应用程序时,会打开一个没有扩展的新浏览器窗口。
我需要扩展程序来与网站交互,并且我希望它在新选项卡而不是新窗口中的任何现有浏览器窗口中打开。
我之前通过在选项中取消选择“为 ASP.NET 启用 JavaScript 调试”来修复 ASP.net MVC / Core 应用程序上的此问题。该选项仍处于取消选择状态,但现在 Blazor 中正在发生这种情况。这个问题是我在谷歌上能找到的所有解决方案。
如何使 Blazor 调试会话在现有浏览器窗口的新选项卡中打开,我可以在其中访问扩展?