小编J. *_*Doe的帖子

如何使用Web API上传文件和模型?

基本上我正在尝试使用Web API 2上传图像和枚举.

这是控制器签名:

[HttpPost]
public UploadResponseVm Upload([FromBody]ResImageType type)
{
Run Code Online (Sandbox Code Playgroud)

问题是,每当我尝试发布多部分表单(带有文件和类型)时,我都会收到415错误:

{"Message":"此资源不支持请求实体的媒体类型'multipart/form-data'.","ExceptionMessage":"没有MediaTypeFormatter可用于从媒体类型的内容中读取'ResImageType'类型的对象'multipart/form-data'.","ExceptionType":"System.Net.Http.UnsupportedMediaTypeException","StackTrace":"at System.Net.Http.HttpContentExtensions.ReadAsAsync [T](HttpContent内容,类型类型,IEnumerable 1 formatters, IFormatterLogger formatterLogger, CancellationToken cancellationToken)\r\n at System.Web.Http.ModelBinding.FormatterParameterBinding.ReadContentAsync(HttpRequestMessage request, Type type, IEnumerable1格式化程序,IFormatterLogger formatterLogger,CancellationToken cancellationToken)"}

我甚至在startup.cs类中添加了以下内容:

    config.Formatters.Insert(0, new System.Net.Http.Formatting.JsonMediaTypeFormatter());
Run Code Online (Sandbox Code Playgroud)

如何使用web api控制器上传模型和文件?

asp.net rest http asp.net-web-api asp.net-web-api2

11
推荐指数
1
解决办法
5362
查看次数

Azure blob存储异常"现有连接被远程主机强行关闭"

我正在尝试使用azure blob存储.我成功上传了一些图片,但突然间我得到了错误:

远程主机强制关闭现有连接

我查看它,每当我尝试检查blob容器是否存在时抛出异常.

这是我的代码:

BlobClient getter属性:(注意,我用**标记了连接字符串中的敏感数据)

static string connectionString = "DefaultEndpointsProtocol=https;AccountName=**;AccountKey=**;BlobEndpoint=https://**.blob.core.windows.net/;TableEndpoint=https://**.table.core.windows.net/;QueueEndpoint=https://**.queue.core.windows.net/;FileEndpoint=https://**.file.core.windows.net/";
public static CloudBlobClient BlobClient
{
            get
            {
                // Retrieve storage account from connection string.
                CloudStorageAccount storageAccount = CloudStorageAccount.Parse(connectionString);

                // Create the blob client.
                CloudBlobClient blobClient = storageAccount.CreateCloudBlobClient();
                return blobClient;
            }
}
Run Code Online (Sandbox Code Playgroud)

抛出异常的实际代码:

 CloudBlobContainer container = BlobClient.GetContainerReference(containerName);
 if (!container.Exists())
Run Code Online (Sandbox Code Playgroud)

确切地说,异常发生在我检查容器是否存在的行.

我不知道出了什么问题.我很肯定连接字符串是正确的(我将其复制).

如果有人能告诉我可能出现的问题,我真的很感激.

c# azure azure-storage azure-storage-blobs azure-sdk-.net

6
推荐指数
1
解决办法
1668
查看次数

使子类无法覆盖方法实现

假设我有一个名为base的抽象类Animal,它有一个名为的虚方法Move.

我创建了一个名为的子类Mammal,它继承自Animal并定义了该Move方法.

然后我创建一个Mammal名为的子类Rabbit.

这是事情:

我不希望Rabbit到能够覆盖的实施Move,其Mammal已经定义(子类的Mammal不能改变移动的定义,Mammal定义).

既然Rabbit继承自己Mammal,是否可以"取消虚拟化" 类中的Move方法,Mammal以防止继承类覆盖方法定义Mammal

.net c# inheritance

6
推荐指数
1
解决办法
689
查看次数

构建错误仅在发布时发生

我正在尝试发布我的项目,该项目引用了我的解决方案中的其他项目。

每当我定期构建解决方案时,它都会构建得很好,没有任何错误。

但是,每当我尝试发布项目时,我都会收到消息“构建失败”。

当我检查输出日志时,我看到以下 3 个错误:

C:\Users\MyUsername\Dropbox\Projects\SEO\QualityLinkBuilder\Web\RealestateJobsMigrations\RealestateJobsConfiguration.cs(10,101,10,124):错误CS0234:命名空间“RealestateScraper”中不存在类型或命名空间名称“RealestateJobsDbContext”(是您缺少程序集参考吗?)

C:\Users\MyUsername\Dropbox\Projects\SEO\QualityLinkBuilder\Web\RealestateJobsMigrations\RealestateJobsConfiguration.cs(18,56,18,79):错误CS0234:命名空间'中不存在类型或命名空间名称'RealestateJobsDbContext' RealestateScraper'(您是否缺少程序集参考?)

C:\Users\MyUsername\Dropbox\Projects\SEO\QualityLinkBuilder\Web\ViewModels\JobsVm.cs(364,51,364,69):错误CS0246:找不到类型或命名空间名称“ClosedRealestateId”(您是否缺少使用指令还是程序集引用?)

但是,我引用了项目“RealestateScraper”,并且类 RealestateJobsDbContext&ClosedRealestateId 存在于“RealestateScraper”项目根命名空间中,该命名空间已被标记为在输出标记错误的位置中使用。

(就像我之前所说的,该项目在不发布时也构建得很好)。

这里可能有什么问题? 我已经清理并重建了,但这似乎没有改变任何东西。

注意:我没有显示带有错误的代码,因为它似乎没有任何作用,因为我正确引用了文件中的程序集(使用 RealestateScraper;

.net c# asp.net publish namespaces

5
推荐指数
1
解决办法
2428
查看次数

数据库在更新时应用所有先前的迁移,而不仅仅是新的迁移

我正在开发一个网站,截至目前,它都有一个生产和测试数据库.生产数据库在外部托管,而测试数据库在本地托管.

每当我对数据库进行更改时,我都会通过迁移来应用更改.添加新迁移后,我在生产和测试数据库上运行update-database命令以使它们保持同步.

我将迁移应用到我的生产数据库中,但是,当我想将迁移应用到我的测试数据库时,我发现它尝试应用所有以前的迁移(而不仅仅是新的迁移):

这是输出:

应用显式迁移:[201603230047093_Initial,201603232305269_AddedBlobNameToImage,201603242121190_RemovedSourceFromRealestateDbTable,201603311617077_AddedSourceUrlId,201604012033331_AddedIndexProfileAndFacebookNotifications,201604012233271_RemovedTenantIndexProfile,201604042359214_AddRealestateFilter].应用显式迁移:201603230047093_Initial.System.Data.SqlClient.SqlException(0x80131904):数据库中已有一个名为"Cities"的对象.

显然它失败了,因为数据库的当前状态是第二次最新迁移.但是我想知道为什么它会尝试应用以前的所有迁移?

与生产数据库(已一次应用一个迁移)不同,测试数据库已在先前的迁移中删除并创建,因此其迁移历史记录表仅包含一行:

201604012239054_InitialCreate 
Run Code Online (Sandbox Code Playgroud)

(我假设InitialCreate是所有先前迁移的自动生成名称).

综上所述:

为什么测试数据库尝试应用所有以前的迁移而不仅仅是新添加的?

编辑:运行COMMMAND时,我得到以下输出脚本:

DECLARE @CurrentMigration [nvarchar](max)

IF object_id('[dbo].[__MigrationHistory]') IS NOT NULL
    SELECT @CurrentMigration =
        (SELECT TOP (1) 
        [Project1].[MigrationId] AS [MigrationId]
        FROM ( SELECT 
        [Extent1].[MigrationId] AS [MigrationId]
        FROM [dbo].[__MigrationHistory] AS [Extent1]
        WHERE [Extent1].[ContextKey] = N'Boligside.Migrations.Configuration'
        )  AS [Project1]
        ORDER BY [Project1].[MigrationId] DESC)

IF @CurrentMigration IS NULL
    SET @CurrentMigration = '0'

IF @CurrentMigration < '201603230047093_Initial'
Run Code Online (Sandbox Code Playgroud)

(它继续进行每个先前迁移的语句)

我的数据库中的当前迁移表看起来如下(请注意,第一行是针对日志记录框架,因此它不相关): 在此输入图像描述

database entity-framework database-migration ef-migrations entity-framework-6

5
推荐指数
1
解决办法
1922
查看次数

获取声明类的名称?

假设我有一个父类和一个子类:

public abstract class Parent
{
    public string GetParentName()
    {
        return GetType().Name;
    }
}

public class Child : Parent
{
    public string GetChildName()
    {
        return GetType().Name;
    }
}
Run Code Online (Sandbox Code Playgroud)

截至目前,GetParentName()GetChildName()都将返回Child.

但是,在我的场景中,我想获取声明方法的类的名称.

因此GetChildName()应返回ChildGetParentName()应返回Parent.

这有可能吗?

注意:

我知道我可以使用GetType().BaseType.Name但这不起作用,因为层次结构可能很复杂.

.net c# reflection inheritance

5
推荐指数
1
解决办法
84
查看次数