简体   繁体   English

WCF无法添加服务。 可能无法访问服务元数据。 确保您的服务正在运行并公开元数据

[英]WCF Failed to add a service. Service metadata may not be accessible. Make sure your service is running and exposing metadata

I have a WebService that intents to upload a file to a server but i keep getting the error in the title when i want to run it from my VS2010. 我有一个WebService,它意图将文件上传到服务器,但当我想从我的VS2010运行它时,我不断收到标题中的错误。

I have searched over this site and the solutions have not helped me, unless i'm doing something wrong. 我搜索了这个网站,解决方案没有帮助我,除非我做错了什么。

this is the site that i get the example: Example 这是我得到示例的网站: 示例

here is my Interface 这是我的界面

namespace FUWcf
{
// NOTE: You can use the "Rename" command on the "Refactor" menu to change the class name "Service1" in code, svc and config file together.
public class FileUploadService : IFileUploadService
{
    public bool UploadFileData(FileData fileData)
    {
        bool result = false;
        try
        {
            //Set the location where you want to save your file
            string FilePath = Path.Combine(ConfigurationManager.AppSettings["Path"], fileData.FileName);

            //If fileposition sent as 0 then create an empty file
            if (fileData.FilePosition == 0)
            {
                File.Create(FilePath).Close();
            }

            //Open the created file to write the buffer data starting at the given file position
            using (FileStream fileStream = new FileStream(FilePath, FileMode.Open, FileAccess.ReadWrite, FileShare.Read))
            {
                fileStream.Seek(fileData.FilePosition, SeekOrigin.Begin);
                fileStream.Write(fileData.BufferData, 0, fileData.BufferData.Length);
            }
        }
        catch (Exception ex)
        {
            ErrorDetails ed = new ErrorDetails();
            ed.ErrorCode = 1001;
            ed.ErrorMessage = ex.Message;
            throw new FaultException<ErrorDetails>(ed);
        }

        return result;
    }
}
}

Here is the service: 这是服务:

namespace FUWcf
{
// NOTE: You can use the "Rename" command on the "Refactor" menu to change the interface name "IService1" in both code and config file together.
[ServiceContract]
public interface IFileUploadService
{

    [OperationContract]
    [FaultContract(typeof(ErrorDetails))]
    bool UploadFileData(FileData fileData);
}


[DataContract]
public class FileData
{
    [DataMember]
    public string FileName { get; set; }

    [DataMember]
    public byte[] BufferData { get; set; }

    [DataMember]
    public int FilePosition { get; set; }
}

[DataContract]
public class ErrorDetails
{
    [DataMember]
    public int ErrorCode { get; set; }

    [DataMember]
    public string ErrorMessage { get; set; }
}
}

And here is my web.config 这是我的web.config

<?xml version="1.0"?>
<configuration>

  <system.web>
    <compilation debug="true" targetFramework="4.0" />
  </system.web>
  <appSettings>
    <add key="Path" value="C:\Users\c.asacha\Documents\Proyectos\Generales\FUWcf\FUWcf\temp\"/>
  </appSettings>
  <system.serviceModel>
    <bindings>
      <wsHttpBinding>
        <binding name="WSHBBinding" />
      </wsHttpBinding>
    </bindings>
    <services>
      <service behaviorConfiguration="fus" name="FUWcd.FileUploadService">
        <endpoint address=""
          binding="wsHttpBinding" bindingConfiguration="WSHBBinding" name="FileUploadService"
          contract="FUWcf.IFileUploadService" />

        <endpoint address="mex" binding="mexHttpBinding" contract="IMetadataExchange" />
      </service>
    </services>
    <behaviors>
      <serviceBehaviors>
        <behavior name="fus">
          <serviceMetadata httpGetEnabled="true" />
          <serviceDebug includeExceptionDetailInFaults="true" />
        </behavior>
      </serviceBehaviors>
    </behaviors>
    <serviceHostingEnvironment aspNetCompatibilityEnabled="false" multipleSiteBindingsEnabled="false" />
  </system.serviceModel>
  <system.webServer>
    <modules runAllManagedModulesForAllRequests="true"/>
  </system.webServer>

</configuration>

I hope someone can help me with this, or a link for a better example. 我希望有人可以帮助我,或者链接以获得更好的例子。

Thanks in advance. 提前致谢。

You configuration is wrong ( Service name is name= "FUWcd.FileUploadService" where it should be name="FUWcf.FileUploadService" ) 您的配置错误(服务名称是name = "FUWcd.FileUploadService" ,其中应该是name="FUWcf.FileUploadService"

Anyway- Created the web site and added the web service like this ( You dont need Mex endpoint in web configuration as it is already on, The url will become the servicename http://{localServerName}:{port}/FileUploadService.svc ): 无论如何 - 创建了网站并添加了这样的Web服务(您不需要Web配置中的Mex端点,因为它已经在,URL将成为服务名称http://{localServerName}:{port}/FileUploadService.svc ) :

 public class FileUploadService : IFileUploadService
{
    public bool UploadFileData(FileData fileData)
    {
        bool result = false;
        try
        {
            //Set the location where you want to save your file
            string FilePath = Path.Combine(ConfigurationManager.AppSettings["Path"], fileData.FileName);

            //If fileposition sent as 0 then create an empty file
            if (fileData.FilePosition == 0)
            {
                File.Create(FilePath).Close();
            }

            //Open the created file to write the buffer data starting at the given file position
            using (FileStream fileStream = new FileStream(FilePath, FileMode.Open, FileAccess.ReadWrite, FileShare.Read))
            {
                fileStream.Seek(fileData.FilePosition, SeekOrigin.Begin);
                fileStream.Write(fileData.BufferData, 0, fileData.BufferData.Length);
            }
        }
        catch (Exception ex)
        {
            ErrorDetails ed = new ErrorDetails();
            ed.ErrorCode = 1001;
            ed.ErrorMessage = ex.Message;
            throw new FaultException<ErrorDetails>(ed);
        }

        return result;
    }
}

Data Contracts were same as well. 数据合同也是一样的。 Then in Web.Config file added like this and it works fine: 然后在Web.Config文件中添加如下,它工作正常:

 <system.serviceModel>
<services>
  <service name="WebApplication1.FileUploadService">
    <endpoint address="fileService" binding="wsHttpBinding" bindingConfiguration=""
      contract="WebApplication1.IFileUploadService" />
  </service>
</services>
<behaviors>
  <serviceBehaviors>
    <behavior name="">
      <serviceMetadata httpGetEnabled="true" httpsGetEnabled="true" />
      <serviceDebug includeExceptionDetailInFaults="false" />
    </behavior>
  </serviceBehaviors>
</behaviors>
<serviceHostingEnvironment aspNetCompatibilityEnabled="true"
  multipleSiteBindingsEnabled="true" />

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

相关问题 添加服务失败。 服务元数据可能无法访问。 确保您的服务正在运行并公开元数据 - Failed to add a service. Service metadata may not be accessible. Make sure your service is running and exposing metadata WCF测试客户端:无法添加服务。可能无法访问服务元数据。确保您的服务正在运行并公开元数据 - WCF Test Client : Failed to add a service. Service metadata may not be accessible. Make sure your service is running and exposing metadata 添加服务失败。 服务元数据可能无法访问。 确保您的服务正在运行并公开元数据。 WCF错误 - Failed to add a service. Service metadata may not be accessible. Make sure your service is running and exposing metadata. WCF Error WCF:无法添加服务。 可能无法访问服务元数据。 确保您的服务正在运行并公开元数据 - WCF: Failed to add a service. Service metadata may not be accessible. Make sure your service is running and exposing metadata 获取&#39;无法添加服务。 服务元数据可能无法访问。 测试 WCF 项目时出错 - Getting 'Failed to add a service. Service metadata may not be accessible.' error when testing a WCF project WCF:无法添加服务。 服务元数据可能无法访问 - WCF:Failed to add a service. Service metadata may not be accessible 运行WCF服务获取错误添加服务失败。 服务元数据可能无法访问 - Run WCF service getting error Failed to add a service. Service metadata may not be accessible 添加服务失败。 服务元数据可能无法访问 - Failed to add a service. Service metadata may not be accessible WcfTestClient:添加服务失败。 服务元数据可能无法访问 - WcfTestClient: Failed to add a service. Service metadata may not be accessible 服务元数据可能无法在WCF中访问 - Service metadata may not be accessible In WCF
 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM