WebClient.UploadString返回500提交给在IIS Express上运行的Web服务

问题描述 投票:0回答:1

我正在使用.NET Framework 4.5.1 WebClient,并将其发布到我在本地运行的* .ashx中,以便进行调试。客户站点使用如下代码:

var cli = new WebClient();
cli.Headers[ HttpRequestHeader.ContentType ] = "application/json";

var job = new
{
    Inputs = inputs,
    InputTables = inputTables,
    ...
};

var configuration = Newtonsoft.Json.JsonConvert.SerializeObject( job );

var response = cli.UploadString(
    serviceUrl,
    configuration
);

serviceUrl为http://localhost:54300/Calculation.ashx,正在IIS Express下运行。

Web服务通过以下方式返回结果:

    private void ReturnResponse( HttpContext context, JObject result )
    {
        using ( var textWriter = new StreamWriter( context.Response.OutputStream ) )
        {
            context.Response.ContentType = "application/json";
            using ( var jsonWriter = new JsonTextWriter( textWriter ) )
            {
                result.WriteTo( jsonWriter );
            }
        }
    }

这全都可以在我自己的个人计算机上使用,但是在我公司发行的计算机上,它无法使用,我不知所措。我认为这是某种安全设置,或者至少我希望如此。

在公司计算机上,客户站点已成功提交到Web服务,我已经逐步完成了Web服务代码,并且所有代码在那里工作,并且它通过ReturnResponse返回了结果,并且看起来都正确。但是,客户端站点随后抛出500错误'远程服务器返回错误:(500)内部服务器错误。',但没有太多信息可以继续。

其他:如果将Web服务托管在Web上(显然在IIS下运行),则如果客户端站点(在我公司的计算机上运行)提交到Web服务,则此代码可以正常工作。所以代码很好-我认为:)-但仅在本地运行Web服务时才出现问题。

有人知道可能导致这种情况的某种安全性/配置设置吗?正如我所说,它可以在多台个人计算机上正常工作,没有问题。

c# webclient iis-express
1个回答
0
投票

抛出的500个异常的类型为HttpException,因此我阅读了响应并发现了此错误消息:

无法向会话状态服务器发出会话状态请求。请确保启动ASP.NET状态服务,并确保客户端和服务器端口相同。如果服务器位于远程机器,请检查的价值HKEY_LOCAL_MACHINE \ SYSTEM \ CurrentControlSet \ Services \ aspnet_state \ Parameters \ AllowRemoteConnection。如果服务器在本地计算机上,以及前面提到的注册表值不存在或设置为0,则状态服务器连接字符串必须使用“ localhost”或服务器名称为“ 127.0.0.1”。

因此,我只需要打开ASP.NET状态服务。我可以进行一个web.config转换,以使debug / local仅在常规的inproc会话中运行,然后使发行版使用State Service(在我们的案例中是必需的),但是现在在本地将其打开就足够了。

© www.soinside.com 2019 - 2024. All rights reserved.