小编Mic*_*ltu的帖子

如何将Java枚举转换为流?

我有一个第三方图书馆给了我一个Enumeration<String>.我想懒洋洋地与枚举工作作为Java 8 Stream,呼叫之类的东西filter,mapflatMap在其上.

是否有现有的库?我已经引用了Guava和Apache Commons,所以如果其中任何一个都有理想的解决方案.

或者,是什么把一个最好/最简单的方式Enumeration进入Stream,同时保留所有的懒惰天性?

java java-8 java-stream

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

如何在Kotlin中从字符串创建枚举?

我有一些实例Foo和枚举Bar.如果我有一个字符串"Foo",我怎么能从中实例化一个Foo枚举?在C#Enum.Parse(...)中,Kotlin会有相同的东西吗?

目前,我发现最好的是创建一个工厂,打开所有可能的字符串,但这容易出错,并且对于大型枚举表现不佳.

kotlin

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

为什么Visual Studio中的SQL Server对象资源管理器这么慢?

我刚刚在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

14
推荐指数
1
解决办法
3444
查看次数

我可以让我的程序集引用任何版本的另一个程序集吗?

  • 我正在开发一个类库(MyClassLibrary).
  • 我依赖第三方类库(ThirdPartyClassLibrary).
  • 我需要使用与ThirdPartyClassLibrary我的用户相同的版本.例如,如果我在ThirdPartyClassLibrary用户中设置静态值,则需要查看该更改.
  • 我班级的用户可能依赖于4个不同版本中的任何一个ThirdPartyClassLibrary.
  • ThirdPartyClassLibrary 很大,我不想用我的软件分发它.
  • 我已经反映了所有4个版本ThirdPartyClassLibrary并验证了我将使用它们做的事情在所有版本中是兼容的(接口是相同的,方法签名是相同的,等等).
  • 我需要打电话ThirdPartyClassLibrary才能保持高效!每次我需要打电话时,我都无法反思一切.
  • MyClassLibrary 将在运行时加载,所以我不能指望用户搞乱程序集绑定重定向或其他开发时间设置(或任何设置,我的用户都无法做任何事情).
  • 我想从编译时检查我的代码中受益,所以理想情况下根本没有反射.

我如何编写MyClassLibrary这样的信息,当它加载到进程中时,无论ThirdPartyClassLibrary用户加载了哪个版本,一切都能正常工作?

.net c# .net-3.5 c#-5.0

13
推荐指数
2
解决办法
7613
查看次数

如何在Azure中允许URL编码的路径段

我有一个在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设置.

iis azure azure-web-sites asp.net-core-mvc asp.net-core

12
推荐指数
1
解决办法
1490
查看次数

如何将异步函数写入服务总线队列?

使用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的类似消息.

c# azure azure-webjobs azure-webjobssdk

10
推荐指数
1
解决办法
1877
查看次数

为什么我在referencesource.microsoft.com上找不到System.Web.pdb?

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.pdbreferencesource.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,但如果我错了,我不介意升级,如果它解决了这个问题.

.net c# debug-symbols symbol-server reference-source

9
推荐指数
0
解决办法
2874
查看次数

如何在WebAPI中返回404和403的json?

我有一个相当简单的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

重现步骤:

  1. 打开Visual Studio 2013 Update 4
  2. 新项目
  3. 选择.NET Framework 4.5.2
  4. 选择模板> Visual C#> Web> ASP.NET Web应用程序
  5. 选择"清空",不选中所有文件夹和核心参考.
  6. 右键单击项目>添加>新脚手架项> Web API 2控制器 - 清空
  7. 修改DefaultController,如下所示.
  8. 修改WebApiConfig.cs,如下所示.
  9. 运行/调试

我期望的是,当我导航到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)

c# asp.net asp.net-web-api

9
推荐指数
1
解决办法
4501
查看次数

如何让WebAPI使用JsonProperty验证我的JSON(必需= Required.Always)?

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,因为 …

c# asp.net json.net asp.net-web-api asp.net-web-api2

8
推荐指数
2
解决办法
7547
查看次数

我应该把Database.EnsureCreated放在哪里?

我有一个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# asp.net entity-framework-core

8
推荐指数
1
解决办法
6350
查看次数