我有一个第三方图书馆给了我一个Enumeration<String>.我想懒洋洋地与枚举工作作为Java 8 Stream,呼叫之类的东西filter,map并flatMap在其上.
是否有现有的库?我已经引用了Guava和Apache Commons,所以如果其中任何一个都有理想的解决方案.
或者,是什么把一个最好/最简单的方式Enumeration进入Stream,同时保留所有的懒惰天性?
我有一些实例Foo和枚举Bar.如果我有一个字符串"Foo",我怎么能从中实例化一个Foo枚举?在C#Enum.Parse(...)中,Kotlin会有相同的东西吗?
目前,我发现最好的是创建一个工厂,打开所有可能的字符串,但这容易出错,并且对于大型枚举表现不佳.
我刚刚在Azure中创建了一个新的SQL Server数据库,然后使用Azure门户中的链接在Visual Studio 2015中打开它.我不得不将我的IP添加到防火墙,但其他过程进展顺利.
但是,当我尝试通过SQL Server对象资源管理器与数据库服务器进行交互时,速度非常慢.扩展我的数据库中的任何文件夹(例如,Tables文件夹)需要10到30秒.数据库是全新的,因此它唯一拥有的是Azure在实例化新数据库时创建的内容.
这是我创建并尝试在Visual Studio中查看的第二个Azure数据库,两者都有相同的问题.有了第一个,我想也许我在设置过程中做错了什么,但这次我确保按照这本书做了一切.
从Visual Studio中运行针对DB实际查询(右键单击DB, ,New Query ...)select * from INFORMATION_SCHEMA.TABLES;是非常快的,所以它不会出现能与我连接到Azure中的问题.
为什么这么痛苦?我该怎么做才能让它更快?
我14.0.24720.00在Windows 10上使用Visual Studio 2015 Update 1()(完全修补),在数据库创建期间,我选中了框以使用最新版本.
sql-server azure visual-studio visual-studio-2015 azure-sql-database
MyClassLibrary).ThirdPartyClassLibrary).ThirdPartyClassLibrary我的用户相同的版本.例如,如果我在ThirdPartyClassLibrary用户中设置静态值,则需要查看该更改.ThirdPartyClassLibrary.ThirdPartyClassLibrary 很大,我不想用我的软件分发它.ThirdPartyClassLibrary并验证了我将使用它们做的事情在所有版本中是兼容的(接口是相同的,方法签名是相同的,等等).ThirdPartyClassLibrary才能保持高效!每次我需要打电话时,我都无法反思一切.MyClassLibrary 将在运行时加载,所以我不能指望用户搞乱程序集绑定重定向或其他开发时间设置(或任何设置,我的用户都无法做任何事情).我如何编写MyClassLibrary这样的信息,当它加载到进程中时,无论ThirdPartyClassLibrary用户加载了哪个版本,一切都能正常工作?
我有一个在Azure中运行的ASP.NET 6 MVC应用程序.我有一个像这样的动作的控制器
[HttpDelete]
[Route("{image_url}")]
public async Task<IActionResult> RemoveImageUrl([FromRoute(Name = "image_url")] String imageUrlString)
Run Code Online (Sandbox Code Playgroud)
然后我称之为
api/https%3A%2F%2Frepocreator.zoltu.io%2Fimages%2FZoltu-Logo-Full-Size.png"
Run Code Online (Sandbox Code Playgroud)
使用Kestrel进行自托管时,此应用程序正常工作,但是一旦部署到Azure,我就会收到500个错误.我已尽可能多地调试,经过大量的谷歌搜索和戳戳后,似乎IIS正在尝试帮助URL解码请求,然后将其转发给ASP.NET来处理.当然,问题是即使我可以说服IIS接受请求
<system.webServer>
<security>
<requestFiltering allowDoubleEscaping="true" />
</security>
</system.webServer>
<system.web>
<httpRuntime requestValidationMode="2.0" requestPathInvalidCharacters="" relaxedUrlToFileSystemMapping="true"/>
<pages validateRequest="false" />
</system.web>
Run Code Online (Sandbox Code Playgroud)
它仍然解码URL并将解码后的URL传递给ASP.NET,后者找不到匹配的路由.
我该怎么做才能告诉IIS停止尝试在这里提供帮助,只是传递它获得的任何URL,而不进行任何类型的预验证或重写?注意:这是一个Azure Web App,因此我无法直接访问IIS设置.
使用Azure WebJobs SDK,我想创建一个异步函数,它将接收ServiceBus队列输入并写入ServiceBus队列输出.异步方法不能有参数,对于BlobStorage上的示例,似乎可以通过使用Streams和TextWrite来解决这些参数.但是,当我尝试使用ServiceBus参数执行相同操作时,我收到异常.
public static async void Transform(
[ServiceBusTrigger("%InputQueue%")] String input,
[ServiceBus("%OutputQueue%")] TextWriter output,
TextWriter log)
Run Code Online (Sandbox Code Playgroud)
错误索引方法'FilterCurrentCpesToNewCpes'
无法绑定ServiceBus以键入"System.IO.TextWriter".
我收到Stream的类似消息.
SYMSRV: http://referencesource.microsoft.com/symbols/System.Web.pdb/E6EBD6B61CEA407591438CC4E48036891/System.Web.pdb not found
http://referencesource.microsoft.com/symbols: Symbols not found on symbol server.
SYMSRV: System.Web.pdb from http://msdl.microsoft.com/download/symbols: 131401 bytes
http://msdl.microsoft.com/download/symbols: Symbols downloaded from symbol server.
C:\Users\Micah\Symbols\System.Web.pdb\E6EBD6B61CEA407591438CC4E48036891\System.Web.pdb: Symbols loaded.
Run Code Online (Sandbox Code Playgroud)
注意它是如何无法找到System.Web.pdb的referencesource.microsoft.com.它发现它,msdl.microsoft.com但那些没有源文件/行.我已经下载的源代码System.Web.dll来自referencesource.microsoft.com所以我知道源可用.根据我的理解,referencesource.microsoft.com应该为所有已发布的.NET Framework版本(包括补丁)提供PDB?
的版本System.Web.dll当前正在加载是发现在GAC标记为版的64位版本4.0.30319.34212.它的发布日期为5/29/2014.据我所知,这是最新版本System.Web.dll,但如果我错了,我不介意升级,如果它解决了这个问题.
我有一个相当简单的Web API应用程序,目前有一个路由设置.如果用户尝试访问任何其他路由,则会返回404,但404的主体是HTML而不是JSON(这是他们的接受标头要求的).什么是最简单的(最少的代码/配置添加到我的项目)方式让IIS响应具有JSON错误响应而不是网页的不存在路由的请求?
同样的问题适用于403s.如果我尝试导航到我的应用程序的根目录,我会再次返回403,再次作为网页.我更希望这是一个404,但更大的问题是如何让我的应用程序的所有响应都是JSON而不是只有有效路由的响应?我提到了403,因为我正在寻找一个更广泛的解决方案,而不仅仅是设置一个全能路由,因为我不相信这将帮助我解决403或在控制器动作之外发生的任何其他随机异常.
我希望我的应用程序尊重请求中的接受标头.但是,由于我的API现在只支持JSON,我愿意(暂时)它总是用JSON响应.
我正在使用WebAPI 2.2和.NET 4.5.2.
编辑
这不是格式化程序问题.格式化程序正确应用于成功的消息,尊重请求中的接受标头.这特别是未处理的路由和Web服务器错误(例如在尝试访问Web根目录时被禁止)的问题.
编辑2
重现步骤:
我期望的是,当我导航到http://localhost:<port>/api/do_stuff我看到Success!XML或JSON时,取决于接受标题(我这样做),当我导航到任何其他页面时,我应该看到Failure!(我不这样做).相反,当我导航到任何其他页面时,我看到IIS的404响应.
DefaultController.cs:
[RoutePrefix("api")]
public class DefaultController : ApiController
{
[HttpGet]
[Route("do_stuff")]
public String DoStuff()
{
return "Success!";
}
}
Run Code Online (Sandbox Code Playgroud)
WebApiConfig.cs:
public static class WebApiConfig
{
public static void Register(HttpConfiguration config)
{
config.MapHttpAttributeRoutes(); …Run Code Online (Sandbox Code Playgroud) public class MyModel
{
[JsonProperty(PropertyName = "foo", Required = Required.Always)]
public String Bar;
}
public class MyController : ApiController
{
public String PostVersion1([FromBody] MyModel myModel)
{
if (ModelState.IsValid)
{
if (myModel.Bar == null)
return "What?!";
else
return "Input is valid.";
}
else
{
return "Input is invalid.";
}
}
}
Run Code Online (Sandbox Code Playgroud)
结果:
Input |Output
-------------------|------
{ "bad" : "test" } | What?!
{ "Bar" : "test" } | What?!
{ "foo" : "test" } | Input is valid.
Run Code Online (Sandbox Code Playgroud)
显然支持JsonPropertyAttribute,因为我能够设置PropertyName并使其生效.但是,我希望ModelState.IsValid前两个示例输入为false,因为 …
我有一个Entity Framework Core + ASP.NET Core应用程序,当我的应用程序启动时,我想确保创建数据库,并最终(一旦我有迁移)我想确保它们也运行.
最初我放入Database.EnsureCreated()了我的构造函数,DbContext但是每次有人点击我的应用程序时都会运行,因为DbContext每次都会创建一个新的实例.
我试着把它放到我的启动代码中,但我需要一个我的实例DbContext才能做到这一点,目前还不清楚如何获得一个.我正在配置EF如下:
serviceCollection.AddEntityFramework()
.AddSqlServer()
.AddDbContext<Models.MyContext>(options => options.UseSqlServer(...));
Run Code Online (Sandbox Code Playgroud)
我没有看到从服务集合中获取DbContext实例的方法,我没有看到任何适当的单例来注入DbContext,所以我可以做一些一次性初始化.
那么确保一些与我的DbContext相关的代码在每个应用程序运行时被调用一次的最佳位置是什么?
c# ×6
asp.net ×3
azure ×3
.net ×2
.net-3.5 ×1
asp.net-core ×1
c#-5.0 ×1
iis ×1
java ×1
java-8 ×1
java-stream ×1
json.net ×1
kotlin ×1
sql-server ×1