javascript

java

python

c#

android

c++

node.js

php

html

jquery

ios

reactjs

css

.net

git

ruby-on-rails

sql

c

ruby

string

在WCF中缓存?

我正在构建WCF服务。 我需要将参考数据存储在缓存中,每次从该方法接收输入时我都会对其进行查找...正确的方法是什么? 我还想为缓存定义一个过期策略,该策略将在一定时间间隔后使其失效。

trans by 2020-08-12T07:55:52Z

.net-WCF错误:服务方未对调用方进行身份验证

我正在尝试从客户端控制台应用程序访问服务器上的WCF服务以进行测试。 我收到以下错误:

呼叫者未通过验证 服务

我正在使用<endpoint "basicHttpBinding" ... />。我不确定该服务需要哪种身份验证?



<behaviors>
  <serviceBehaviors>
    <behavior name="MyTrakerService.MyTrakerServiceBehavior">
      <!-- To avoid disclosing metadata information, set the value below to false and remove the metadata endpoint above before deployment -->
      <serviceMetadata httpGetEnabled="true"/>
      <!-- To receive exception details in faults for debugging purposes, set the value below to true.  Set to false before deployment to avoid disclosing exception information -->
      <serviceDebug includeExceptionDetailInFaults="false"/>
    </behavior>
  </serviceBehaviors>
</behaviors>

更新资料如果我将绑定更改为<endpoint "basicHttpBinding" ... />(从wsHttpBinding),则可以使用在IIS 7.0托管的Windows 2008服务器上

trans by 2020-08-06T03:13:10Z

从多部分/表单数据POST读取文件输入

我正在通过HTML表单将文件发布到WCF REST服务,其中enctype设置为multipart/form-data,单个组件为<input type="file" name="data">。服务器读取的结果流包含以下内容:

------WebKitFormBoundary
Content-Disposition: form-data; name="data"; filename="DSCF0001.JPG"
Content-Type: image/jpeg

<file bytes>
------WebKitFormBoundary--

问题是我不确定如何从流中提取文件字节。 我需要执行此操作才能将文件写入磁盘。

trans by 2020-07-29T09:59:26Z

WCF-Windows身份验证-安全设置需要匿名

我正在努力使WCF服务在服务器上的IIS上运行。 部署后,我最终收到一条错误消息:

此服务的安全设置需要“匿名”身份验证,但是承载此服务的IIS应用程序未启用它。

我想使用Windows身份验证,因此我禁用了匿名访问。 还要注意,有aspNetCompatibilityEnabled(如果有任何区别)。

这是我的web.config:

<system.serviceModel>
    <serviceHostingEnvironment aspNetCompatibilityEnabled="true" />
    <bindings>
        <webHttpBinding>
            <binding name="default">
                <security mode="TransportCredentialOnly">
                    <transport clientCredentialType="Windows" proxyCredentialType="Windows"/>
                </security>
            </binding>
        </webHttpBinding>
    </bindings>
    <behaviors>
        <endpointBehaviors>
            <behavior name="AspNetAjaxBehavior">
                <enableWebScript />
                <webHttp />
            </behavior>
        </endpointBehaviors>
        <serviceBehaviors>
            <behavior name="defaultServiceBehavior">
                <serviceMetadata httpGetEnabled="true" httpsGetEnabled="false" />
                <serviceDebug includeExceptionDetailInFaults="true" />
                <serviceAuthorization principalPermissionMode="UseWindowsGroups" />
            </behavior>
        </serviceBehaviors>
    </behaviors>
    <services>
        <service name="xxx.Web.Services.RequestService" behaviorConfiguration="defaultServiceBehavior">
            <endpoint behaviorConfiguration="AspNetAjaxBehavior" binding="webHttpBinding"
             contract="xxx.Web.Services.IRequestService" bindingConfiguration="default">
            </endpoint>
            <endpoint address="mex" binding="mexHttpBinding" name="mex" contract="IMetadataExchange"></endpoint>
        </service>
    </services>
</system.serviceModel>

我在整个互联网上搜索都没有运气。 任何线索都将不胜感激。

trans by 2020-07-29T04:01:11Z

wcf-内容类型为application / soap + xml; servi不支持charset = utf-8

尝试将WCF服务添加到WCFTestClient时,我收到错误以下的错误。 我在网络上浏览了许多解决方案,但无法正常工作。

有人可以帮我解决这些问题吗?我还提供服务的配置文件:

内容类型application / soap + xml; charset = utf-8不被支持 服务客户端和服务绑定可能不匹配。 的 远程服务器返回错误:(415)无法处理该消息 因为内容类型为'application / soap + xml; charset = utf-8'不是 预期的类型为'text / xml; 字符集= utf-8

码:

<?xml version="1.0" encoding="utf-8" ?>
<configuration>

  <system.web>
    <compilation debug="true" />
  </system.web>
  <!-- When deploying the service library project, the content of the config file 
  must be added to the host's app.config file. System.Configuration does not 
  support config files for libraries. -->
  <system.serviceModel>
    <bindings>
      <basicHttpBinding>
        <binding name="basicHttp" allowCookies="true"
                 maxReceivedMessageSize="20000000"
                 maxBufferSize="20000000"
                 maxBufferPoolSize="20000000">
          <readerQuotas maxDepth="32"
               maxArrayLength="200000000"
               maxStringContentLength="200000000"/>
        </binding>
      </basicHttpBinding>
    </bindings>
    <services>
     <service name="WCFTradeLibrary.TradeService">
        <endpoint address="" binding="basicHttpBinding"
            bindingConfiguration="basicHttp"
            contract="WCFTradeLibrary.ITradeService">          
         </endpoint>
     </service>
    </services>
    <behaviors>
      <serviceBehaviors>
        <behavior>
          <!-- To avoid disclosing metadata information, 
          set the value below to false and remove the metadata endpoint 
          above before deployment -->
          <serviceMetadata httpGetEnabled="true"/>
          <!-- To receive exception details in faul`enter code here`ts for 
          debugging purposes,  
          set the value below to true.  Set to false before deployment 
          to avoid disclosing exception info`enter code here`rmation -->
          <serviceDebug includeExceptionDetailInFaults="true" />
        </behavior>
      </serviceBehaviors>
    </behaviors>
  </system.serviceModel>

</configuration>
trans by 2020-07-26T16:51:46Z

java-从Android发送JSON HTTP POST请求

我正在使用下面的代码发送http POST请求,该请求将对象发送到WCF服务。 可以,但是如果我的WCF服务还需要其他参数怎么办? 如何从Android客户端发送它们?

这是我到目前为止编写的代码:

StringBuilder sb = new StringBuilder();  

String http = "http://android.schoolportal.gr/Service.svc/SaveValues";  


HttpURLConnection urlConnection=null;  
try {  
    URL url = new URL(http);  
    urlConnection = (HttpURLConnection) url.openConnection();
    urlConnection.setDoOutput(true);   
    urlConnection.setRequestMethod("POST");  
    urlConnection.setUseCaches(false);  
    urlConnection.setConnectTimeout(10000);  
    urlConnection.setReadTimeout(10000);  
    urlConnection.setRequestProperty("Content-Type","application/json");   

    urlConnection.setRequestProperty("Host", "android.schoolportal.gr");
    urlConnection.connect();  

    //Create JSONObject here
    JSONObject jsonParam = new JSONObject();
    jsonParam.put("ID", "25");
    jsonParam.put("description", "Real");
    jsonParam.put("enable", "true");
    OutputStreamWriter out = new   OutputStreamWriter(urlConnection.getOutputStream());
    out.write(jsonParam.toString());
    out.close();  

    int HttpResult =urlConnection.getResponseCode();  
    if(HttpResult ==HttpURLConnection.HTTP_OK){  
        BufferedReader br = new BufferedReader(new InputStreamReader(  
            urlConnection.getInputStream(),"utf-8"));  
        String line = null;  
        while ((line = br.readLine()) != null) {  
            sb.append(line + "\n");  
        }  
        br.close();  

        System.out.println(""+sb.toString());  

    }else{  
            System.out.println(urlConnection.getResponseMessage());  
    }  
} catch (MalformedURLException e) {  

         e.printStackTrace();  
}  
catch (IOException e) {  

    e.printStackTrace();  
    } catch (JSONException e) {
    // TODO Auto-generated catch block
    e.printStackTrace();
}finally{  
    if(urlConnection!=null)  
    urlConnection.disconnect();  
}  
trans by 2020-07-24T10:23:12Z

c#-在WCF / WIF中,如何合并来自两个不同客户端的自定义sts令牌的声明

我正在尝试创建类似的内容:客户端对自定义STS1进行身份验证并获取令牌,下一个客户端对机器密钥进行授权,并在自定义STS2上获得令牌并获得另一个令牌。 使用最后一个令牌,客户端请求RP服务上的方法。

所有服务都托管在IIS上,并使用主动联合方案。两个STS的端点都具有ws2007Federation和ws2007Http绑定,而RP使用带有STS2作为发行者的ws2007FederationBinding。

如果我使用CreateChannelWithIssuedToken创建频道,则只能从STS1中看到令牌,而不能从STS2中获得令牌。

因此,我决定将令牌从STS1作为ActAs RST的属性传递给STS2令牌。 失败了-无法解密令牌。

  1. 如何将两个令牌都传递给STS2并合并其中的声明?
  2. 这是一个坏主意-使用RST发送刚刚从STS1令牌中提取的声明吗?
trans by 2020-07-22T19:27:50Z

c#-无法添加服务参考-锁定/只读

每当我添加服务引用时,都会出现错误:

无法添加服务引用“ Servicereference1.reference”
错误:无法检出当前文件。 该文件可能是只读文件或已锁定,或者您可能需要手动将文件检出。

我在项目中已经有服务参考,但是它以某种方式中断并给我一个错误,指出:

找不到引用合同(服务名)的默认端点元素

web.config和服务引用配置中的端点是相同的(localhost)

我也无法更新该引用,因为会出现同样的“无法签出当前文件”错误。

编辑:问题不是仅此项目的本机。 我试图制作一个新的,完全独立的项目,并为此添加服务引用,但遇到了同样的错误。

trans by 2020-07-17T17:19:35Z

asp.net-WCF:System.Net.SocketException-每个套接字地址(协议/网络地址/端口)仅允许使用一种

我有一个WCF服务和一个Web应用程序。 Web应用程序又以轮询的方式连续调用此WCF服务。 在我们的生产环境中,很少会收到此错误。 由于这是内部活动,因此用户不知道何时引发此错误。

无法连接到 [http://localhost/QAService/Service.svc。] TCP错误代码10048:仅一种用法 每个套接字地址 (协议/网络地址/端口)为 通常允许127.0.0.1:80。 -> System.Net.WebException:无法执行 连接到远程服务器---> System.Net.Sockets.SocketException: 每个套接字地址仅使用一种 (协议/网络地址/端口)为 通常允许127.0.0.1:80

我在我们的dev / qa环境中无法重现此行为。 我确保在try..catch..finally块中关闭了客户端连接。 还是不明白是什么原因导致了这个问题..有人知道吗?

注意:我已经看了这个SO问题,但似乎并没有回答我的问题,因此不再重复问题。

trans by 2020-07-14T02:05:44Z

WCF中URITemplate中的可选查询字符串参数?

我正在WCF 4.0中开发一些RESTful服务。 我有如下方法:

[OperationContract]
    [WebGet(UriTemplate = "Test?format=XML&records={records}", ResponseFormat=WebMessageFormat.Xml)]
    public string TestXml(string records)
    {
        return "Hello XML";
    }

因此,如果我将浏览器导航到[http:// localhost:8000 / Service / Test?format = XML&records = 10,],那么一切都将按照原样工作。

但是,我希望能够导航到[http:// localhost:8000 / Service / Test?format = XML]并忽略URL的“&records = 10”部分。 但是现在,由于URI与预期的URI模板不匹配,因此出现服务错误。

那么,如何为某些查询字符串参数实现默认值呢? 我想将“记录”默认设置为10,例如,如果该部分不包含在查询字符串中。

trans by 2020-07-13T04:40:27Z

何时使用KnownType属性?

阅读了MSDN参考之后,我仍然对何时使用KnownType属性有疑问。 我知道该属性将类型信息传达给序列化程序,但是什么时候需要? 当要序列化的类具有基类类型的引用,并且可以将向上引用的派生类设置为这些引用时,是否合适?

此外,过度使用属性是否有任何弊端? 例如,在前面的示例中,即使对该类型进行了显式引用,序列化的类是否也用KnownType(baseClass)标记?

trans by 2020-07-13T00:10:29Z

C#-创建WCF ChannelFactory <T>

我正在尝试将现有的.NET Remoting应用程序转换为WCF。 服务器和客户端都共享公共接口,并且所有对象都是服务器激活的对象。

在WCF世界中,这类似于创建按呼叫服务并使用ChannelFactory<T>创建代理。 我正在为如何为ASP.NET客户端正确创建ConcurrentDictionary挣扎。

出于性能原因,我想缓存ChannelFactory<T>对象,并在每次调用服务时都创建通道。 在.NET远程处理时代,曾经有ConcurrentDictionary方法来获取我可以缓存的客户端对象的集合。 看起来,在WCF世界中没有这样的东西,尽管我能够从配置文件中获得端点的集合。

现在,我认为这将起作用。 我可以创建这样的东西:

public static ProxyHelper
{
    static Dictionary<Type, object> lookup = new Dictionary<string, object>();  

    static public T GetChannel<T>()
    {
        Type type = typeof(T);
        ChannelFactory<T> factory;

        if (!lookup.ContainsKey(type))
        {
            factory = new ChannelFactory<T>();
            lookup.Add(type, factory);
        }
        else
        {
            factory = (ChannelFactory<T>)lookup[type];
        }

        T proxy = factory.CreateChannel();   
        ((IClientChannel)proxy).Open();

        return proxy;
    }    
}

我认为上面的代码可以工作,但是我有点担心多个线程试图添加新的ChannelFactory<T>对象(如果不在查找中)。 由于使用的是.NET 4.0,因此我考虑使用ConcurrentDictionary方法和GetOrAdd()方法或TryGetValue()方法,首先检查ChannelFactory<T>是否存在,然后再使用GetOrAdd()方法。 虽然不确定ConcurrentDictionary.TryGetValue()ChannelFactory.Close()方法的性能。

另一个小问题是,是否需要在ASP.NET应用程序结束后在通道工厂对象上调用ChannelFactory.Close()方法,还是可以让.NET框架自行处理通道工厂对象? 使用((IChannel)proxy).Close()方法调用服务方法后,代理通道将始终关闭。

trans by 2020-07-10T06:10:46Z

wcf-将实体框架对象序列化为JSON

似乎无法使用WCF的本机DataContractJsonSerializer或ASP.NET的本机JavaScript序列化器将Entity Framework对象序列化为JSON。 这是由于两个串行器都拒绝的引用计数问题。 我还尝试了Json.NET,它在引用计数问题上也失败了。


编辑:Json.NET现在可以序列化和反序列化Entity Framework实体。


我的对象是Entity Framework对象,它们被重载以执行其他业务功能(例如,身份验证等),并且我不想使用特定于平台的属性来修饰这些类,因为我想提供一个与平台无关的API 。

我实际上已经在[https://blog.programx.co.uk/2009/03/18/wcf-json-serialization-woes-and-a-solution/]上写了关于我走过的各个步骤的博客。

我错过了明显的事情吗?

trans by 2020-07-09T05:38:12Z

asp.net-使用wcf对sql运行查询时发生奇怪的错误

我正在Windows Server 2003(vps托管)上使用II6构建一个asp.net应用程序。我遇到了我在开发机上未收到的错误(Windows 7,IIS 7.5、64位)。

当我的wcf服务尝试启动针对本地sql服务器运行的查询时,这是我收到的错误:

内存门检查失败,因为 可用内存(43732992字节)为 少于总内存的5%。 作为一个 结果,该服务将不会 可用于传入的请求。 至 解决此问题,或者减轻负载 在机器上或调整值 minFreeMemoryPercentageToActivateService 在serviceHostingEnvironment上 配置元素。

和想法?

trans by 2020-07-04T23:32:50Z

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

我有一个运行良好的WCF Web服务。 但是,有一个特定的呼叫失败了-但仅对某些用户失败。 调用非常简单-这是获取Person对象列表的调用。

对于用户A,它可以正常工作。 该服务查询数据库,创建Person对象的列表,并将其返回给调用应用程序。

对于用户B,它将失败。 奇怪的是,当我进行调试时,该服务似乎可以正常工作。 它能够查询数据库,并创建List对象并返回它。 服务本身永远不会失败。 但是客户端应用程序收到“远程主机强行关闭了现有连接”错误。

对我来说,当服务层试图以XML格式打包数据以发送回调用应用程序时,似乎正在发生某些事情。 我认为这一定是与数据相关的问题,因为该呼叫对其他用户而言效果很好。 我从视觉上看了一下数据,却没有发现任何奇怪的地方。 一种猜测是用户B的数据有一些时髦的隐藏字符或某些东西,因此导致服务意外关闭。 这样的事情。

有任何想法吗?

trans by 2020-07-03T20:00:15Z

C#-如何生成唯一的令牌,该令牌在24小时后到期?

我有一个WCF Web服务,用于检查用户是否有效。

如果用户有效,我想生成一个令牌,该令牌在24小时后失效。

public bool authenticateUserManual(string userName, string password,string language,string token)
{
    if (Membership.ValidateUser(userName,password))
    {
        //////////
        string token = ???? 
        //////////

        return true;
    }
    else 
    {
        return false;
    }
}   
trans by 2020-07-02T18:01:31Z

IIS WCF服务托管与Windows服务

我们开发了WCF服务,并正在寻求对其进行部署。我们的客户将使用basicHttpBinding,但我们的内部团队将使用namedPipesBinding

我们想知道将其托管在IIS 7或Windows Service中是否更好。我们进行了一些测试,发现在IIS中添加绑定时,它不会更新服务的配置文件。 这意味着我们需要在两个不同的地方维护配置。 这不合逻辑,对吧?

我们还在StackOverflow上读到,当在IIS中托管WCF服务时,基址将被忽略(请参阅有关<baseAddresses>的WCF服务配置文件问题)

trans by 2020-07-02T17:41:48Z

.net-被Microsoft WebSockets命名空间混淆

到目前为止,在教程,博客和官方文档中,我已经看到:

  • Microsoft.Web.WebSockets
    • 从NuGet获取
    • 程序集是Microsoft.WebSockets,但命名空间是Microsoft.Web.WebSockets
    • 最后更新时间:2011年9月14日
    • 包含WebSocketHandler,WebSocketCollections,WebSocketExtensions
  • System.Web.WebSockets
    • .NET 4.5的一部分,在Visual Studio 11 Developer Preview中可用
    • 包含AspNetWebSocket,AspNetWebSocketContext,AspNetWebSocketOptions类
    • MSDN上的文档
  • System.Net.WebSockets
    • 感谢Ladislav Mrnka指出这一点
    • .NET 4.5的一部分,在Visual Studio 11 Developer Preview中可用
    • 包含WebSocket,HttpListenerWebSocketContext等
    • MSDN上的文档
  • System.ServiceModel.WebSockets
    • 我一定以为我在某个地方见过这个人,现在找不到
  • Microsoft.ServiceModel.WebSockets
    • 从html5labs.interoperabilitybridges.com / ...获得。
    • 安装到[程序文件] \ Microsoft SDKs \ WCF WebSockets \ 11.06.22 \ bin
    • 包含WebSocketHost,WebSocketService,WebSocketsService类以及接口和集合
    • 最后更新时间:2011年6月22日

这些有什么不同吗? 是旧版本吗?

我一直假定'Microsoft.Web'命名空间用于预发布代码,但是即使.NET 4.5包括内置的System.Web.WebSockets命名空间,即使在Build会议上的演示中也使用该命名空间。

System.Web.WebSockets似乎与Microsoft.Web.WebSockets具有相同的API,但是带有以AspNet开头的类和方法。

System.ServiceModel.WebSockets是WCF名称空间的一部分,这似乎也是放置此内容的明智之地。

帮助-我很困惑。 我应该使用什么?

trans by 2020-07-01T04:40:59Z

.net-HTTP方法GET,POST,PUT和DELETE有什么区别

我正在开发REST WCF服务,从理论上讲,我知道何时选择什么目的。

  • GET获取资源
  • GET更新
  • GET插入
  • GET删除

但是,如果我们不遵循上述规则,假设要插入一条我使用了GET方法的记录,那么它的缺点是什么?

trans by 2020-07-01T00:44:39Z

如何在WCF客户端服务代理上设置HTTP代理(WebProxy)?

如何在WCF客户端上以编程方式设置HTTP代理而不使用默认代理?

代理,代理,代理。

根据WCF的开发模型,我生成客户端“代理”通过在服务的WSDL上运行svcutil.exe来创建类。 (这也是生成客户端配置文件)。

在我的代码中,我新建了该类的实例,并且可以连接到服务。 非常好。

var svcProxy = new MyWebService();
svcProxy.GetInformation(request); 

我们称此为代理类,但还有另一个代理-http代理。 这个服务正在使用wsHttpBinding basicHttpBinding,因此正在结束http。 现在,假设我想通过以下方式将客户端连接到Web服务http代理(由.NET BCL中的System.Net.WebProxy建模)。 我知道从我阅读.NET和WCF文档的丰富而令人愉快的经验中,WCF运行时,如果没有其他说明,将使用默认值通过http / https进行通信时的系统代理。

我可以在命令行中设置WinXP / 2003,带有ProxyCfg.exe,如此处所述,并在以后介绍带有netsh.exe的Windows版本,如此处所述。

我还可以指定在应用程序中使用的默认Web代理通过设置System.Net.WebRequest.DefaultWebProxy属性。

但是,假设我想通过与代理服务器不同的代理服务器进行连接系统范围的代理? 例如,也许没有系统范围的代理,但我特别需要为Web服务使用一个。 也许有一个系统范围的代理,但我需要为网络使用其他代理服务。 实际上,也许有多个Web服务客户端,并且每个人应该获得一个不同的代理。

如何按绑定设置代理?

在ASMX模型中,我可以这样做:

var svcProxy = new MyWebService();
svcProxy.Proxy = new System.Net.WebProxy("http://proxyserver:1234", true);
svcProxy.GetInformation(request); 

但这对于WCF是不可能的。 WCF生成的客户端代理类不公开Proxy属性。 如何为每个客户端代理设置http代理,以及如何在http代理上设置身份验证?

有关:
-如何设置凭证以生成WCF客户端

trans by 2020-06-23T23:03:45Z

1 2 3 4 5 6 7 8 下一页 共8页